2017-05-31 105 views
1

是大於閾值元素的索引我有一個二維數組numpy的:獲取在2D numpy的陣列

x = [[ 1.92043482e-04 0.00000000e+00 0.00000000e+00 0.00000000e+00 
    0.00000000e+00 0.00000000e+00 2.41005634e-03 0.00000000e+00 
    7.19330120e-04 0.00000000e+00 0.00000000e+00 1.42886875e-04 
    0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 
    0.00000000e+00 9.79279411e-05 7.88888657e-04 0.00000000e+00 
    0.00000000e+00 1.40425916e-01 0.00000000e+00 1.13955893e-02 
    7.36868947e-03 3.67091988e-04 0.00000000e+00 0.00000000e+00 
    0.00000000e+00 0.00000000e+00 1.72037105e-03 1.72377961e-03 
    0.00000000e+00 0.00000000e+00 1.19532061e-01 0.00000000e+00 
    0.00000000e+00 0.00000000e+00 0.00000000e+00 3.37249481e-04 
    0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 
    0.00000000e+00 0.00000000e+00 1.75111492e-03 0.00000000e+00 
    0.00000000e+00 1.12639313e-02] 
[ 0.00000000e+00 0.00000000e+00 1.10271735e-04 5.98736562e-04 
    6.77961628e-04 7.49569659e-04 0.00000000e+00 0.00000000e+00 
    2.91697850e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 
    0.00000000e+00 0.00000000e+00 3.30257021e-04 2.46629275e-04 
    0.00000000e+00 1.87586441e-02 6.49103144e-04 0.00000000e+00 
    1.19046355e-04 0.00000000e+00 0.00000000e+00 2.69499898e-03 
    1.48525386e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 
    0.00000000e+00 0.00000000e+00 0.00000000e+00 1.18803119e-03 
    3.93100829e-04 0.00000000e+00 3.76245304e-04 2.79537738e-02 
    0.00000000e+00 1.20738457e-03 9.74669064e-06 7.18680093e-04 
    1.61546793e-02 3.49360861e-04 0.00000000e+00 0.00000000e+00 
    0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 
    0.00000000e+00 0.00000000e+00]] 

我如何獲得了比0.01更大的元素的索引?

現在,我正在做t = np.argmax(x, axis=1)以獲得每個最大值的索引,結果是:[21 35]。我如何實現上述目標?

回答

2

您可以使用np.argwhere返回所有條目的索引數組中的匹配布爾條件:

>>> x = np.array([[0,0.2,0.5],[0.05,0.01,0]]) 

>>> np.argwhere(x > 0.01) 
array([[0, 1], 
     [0, 2], 
     [1, 0]])  
+0

嗯,我想我不是如何解釋NP陣列清楚。 In(array([0,1]),array([1,0])),爲什麼是數組[1,0]而不是[0,1]? – Arman

+0

,因爲他們是numpy對象 – maxymoo

+0

我不確定這是否給了我正確的結果。我做了t = np.where(x> 0.01,我得到的輸出是:(array([0,0,0,0,1,1,1,1]),array([21,23,34, 49,17,24,35,40]))。但是,第一個元素甚至沒有21個元素,當使用argmax返回時,返回值爲 – Arman