2016-10-08 18 views
1

所有值獲得面膜我有numpy的陣列,如:如何從numpy的陣列根據在第三軸

A = np.zeros((X,Y,Z)) 

後來我充滿值的數組,我需要找到的x,y根據價值座標z軸上的數組將其替換爲不同的數組。

例與Z=2我有陣

A = [ [ [1,2], [2,1], [0, 0] ], 
     [ [1,1], [1,1], [0, 0] ], ] 

我需要這樣的東西

A[ where A[x,y,:] == [1,2] ] = [2,1] 

什麼會產生陣列

A = [ [ [2,1], [2,1], [0, 0] ], 
     [ [1,1], [1,1], [0, 0] ], ] 

是否有可能實現,不知怎的,簡單嗎?我想避免迭代x,y座標。

+1

您可以加入一個樣本案例和預期的輸出? – Divakar

+0

@Divakar完成。如果還不夠,請告訴我。 – matousc

回答

3

一個量化的方法 -

A[(A == [1,2]).all(-1)] = [2,1] 

採樣運行 -

In [15]: A 
Out[15]: 
array([[[1, 2], 
     [2, 1], 
     [0, 0]], 

     [[1, 1], 
     [1, 2], 
     [0, 0]]]) 

In [16]: A[(A == [1,2]).all(-1)] = [2,1] 

In [17]: A 
Out[17]: 
array([[[2, 1], 
     [2, 1], 
     [0, 0]], 

     [[1, 1], 
     [2, 1], 
     [0, 0]]]) 
+0

幹得好,謝謝。 – matousc