您好我正在尝试使用棋盘格式创建矩阵,其中第一个[0,0]索引值为1.目前我能够创建此矩阵:
Z = np.zeros((8,8),dtype=int)
Z[1::2,::2] = 1
Z[::2, 1::2] = 1
print(Z)
[[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]]
但我希望以这种方式:
[[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]]
答案 0 :(得分:1)
如你所知,一种方法是分配1并在矩阵中设置零:
Z = np.ones((8, 8), dtype=np.int)
Z[1::2, ::2] = Z[::2, 1::2] = 0
正如@divakar所建议的那样,另一种方法是修正你的指数:
Z = np.zeros((8, 8), dtype=np.int)
Z[1::2, 1::2] = Z[::2, ::2] = 1
答案 1 :(得分:0)
从我尝试过并以某种方式取得成功,我做到了这一点:
Z = np.zeros((8,8),dtype=int)
Z[1::2,::2] = 1
Z[::2, 1::2] = 1
Z[Z==0]=2
Z[Z==1]=0
Z[Z==2]=1
print(Z)
[[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]]
或许有更有效的方法可以做到这一点?