我有一个 numpy 零矩阵和 size = (4, 8)
x = [[0, 0, 0 , 0, 0, 0, 0, 0],
[0, 0, 0 , 0, 0, 0, 0, 0],
[0, 0, 0 , 0, 0, 0, 0, 0],
[0, 0, 0 , 0, 0, 0, 0, 0],]
另外,我有三个不同的矩阵。
a = [[1, 1, 1 , 1, 1, 1, 1, 1],
[1, 1, 1 , 1, 1, 1, 1, 1],
[1, 1, 1 , 1, 1, 1, 1, 1],
[1, 1, 1 , 1, 1, 1, 1, 1],]
b = [[2, 2, 2 , 2, 2, 2, 2, 2],
[2, 2, 2 , 2, 2, 2, 2, 2],
[2, 2, 2 , 2, 2, 2, 2, 2],
[2, 2, 2 , 2, 2, 2, 2, 2],]
c = [[3, 3, 3 , 3, 3, 3, 3, 3],
[3, 3, 3 , 3, 3, 3, 3, 3],
[3, 3, 3 , 3, 3, 3, 3, 3],
[3, 3, 3 , 3, 3, 3, 3, 3],]
我想得到以下结果
output = [[1, 2, 1, 2, 1, 2, 1, 2],
[2, 3, 2, 3, 2, 3, 2, 3],
[1, 2, 1, 2, 1, 2, 1, 2],
[2, 3, 2, 3, 2, 3, 2, 3],]
矩阵 a的值出现在 (row 0, row 2) 和 (column 0, column 2, column 4, column 6)
矩阵 b的值出现在第 0 行、第 1 行、第 2 行、第 3 行,但在第 0 行和第 2 行中,值 2 出现在第 1 列、第 3 列、第 5 列、第 7 列、第 1 行的下一个第 3 行的值 2 出现在第 0 列、第 2 列、第 4 列、第 6 列
矩阵 c的值出现在 (row 1, row 3) 和 (column 1, column 3, column 5, column 7)
import numpy as np
h, w = x.shape
output = np.zeros((h, w))
for i in range(h):
for j in range(w):
if (i % 2) == 0 and (j % 2) == 0:
output[i, j] = a[i, j]
elif (i % 2) == 1 and (j % 2) == 1:
output[i, j] = c[i, j]
else:
output[i, j] = b[i, j]
print(output)
'''
output = [[1. 2. 1. 2. 1. 2. 1. 2.]
[2. 3. 2. 3. 2. 3. 2. 3.]
[1. 2. 1. 2. 1. 2. 1. 2.]
[2. 3. 2. 3. 2. 3. 2. 3.]]
'''
我想尽量不使用for循环,可以用numpy解决吗?
繁花不似锦
泛舟湖上清波郎朗
相关分类