numpy矩阵棋盘格局变化

时间:2017-04-26 10:00:25

标签: python numpy

您好我正在尝试使用棋盘格式创建矩阵,其中第一个[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]]

2 个答案:

答案 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]]

或许有更有效的方法可以做到这一点?