2017-04-26 121 views
2

您好我想創建與方格圖案矩陣,其中,第一[0,0]索引值是1。目前我能創造這個矩陣:numpy的矩陣棋盤格局變化

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]] 
+1

也許:'Z [:: 2,:: 2] = 1; Z [1 :: 2,1 :: 2] = 1'? – Divakar

回答

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 
+0

@AlexT請選擇這個答案,如果它回答你的滿意的問題。 –

0

從我已經試過,不知怎麼succedeed,我這樣做:

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

也許有更有效的方法來做到這一點?

+0

你說的沒錯,因爲你用一個臨時值交換了數組中的所有值。我已經向您展示了一種更簡單的方式,無需在我的答案中進行交換。 –