2017-03-16 32 views
0

如果給定的像2D陣列,不等式,並且其中功能

a = array([[2,4,9,8,473],[54,7,24,19,20]]) 

然後我怎樣才能寫陣列,其是值x和y之間的索引數組?

目前我已經有了:但是

where(5 > a > 10) 

如果將給出一個輸出,如果我說,例如:

where(a > 5) 

,但其中的功能不充分利用這個命令,一旦它會它應該輸出一個二維數組,有沒有一種方法可以輕鬆地堆疊它們?

回答

1

什麼實際的成員可以使用邏輯運算符&(和)| (或)鏈不同條件在一起,所以對於你的情況,你可以這樣做:

np.where((a > 5) & (a < 10)) 

# (array([0, 0, 1]), array([2, 3, 1])) 
# here np.where gives a tuple, the first element of which gives the row index, while the 
# second element gives the corresponding column index 

如果你想索引是其中每一行代表一個元素的數組,你可以堆疊起來:

np.stack(np.where((a > 5) & (a < 10)), axis=-1) 
# array([[0, 2], 
#  [0, 3], 
#  [1, 1]]) 

或@Divakar評論使用np.argwhere((a > 5) & (a < 10))

+0

是的,這給我需要的指標。現在有沒有辦法將這兩種方法結合起來? –

+1

用'np.argwhere()'更簡單。 – Divakar

+0

@Divakar準確。不知道。 – Psidom

0

你有你需要指定兩個指標,一個是其內部數組你引用,另一個用於數組你是指