2017-06-22 148 views
3

我已經在索引文檔上花了幾天的時間,但沒有找到我要找的內容。獲取與數值匹配的數組元素的索引

考慮一下:

import numpy 
fac=numpy.asarray(['a','a','a','b','b','c','c','c']) 
f_ind = [x for x in range(len(fac)) if fac[x] == 'c'] 

返回[5,6,7]像我想要的。然而,看起來NumPy數組應該有一種機制以更簡潔(高效的)方式實現相同的事情。布爾數組可能是解決方案的一部分:

ba = (fac == 'c') 
f_vals = fac[ba] 

但是,只有反芻的fac那等於'c'元素 - 不是非常有幫助。

有關如何使用NumPy實現這一點的任何建議?或者我應該對我所擁有的東西感到滿意?

+0

如果你是幸福的'FAC =='c''真/假值,使用'np.nonzero'(或'np.where')來獲得真值的索引。 – hpaulj

回答

0

有幾種方式與NumPy的到ADRESS此,根據您的需求,您可以使用:

>>> import numpy as np 
>>> fac = np.asarray(['a','a','a','b','b','c','c','c']) 
  • where

    >>> np.where(fac == 'c') 
    (array([5, 6, 7], dtype=int64),) 
    
  • argwhere

    >>> np.argwhere(fac == 'c') 
    array([[5], 
         [6], 
         [7]], dtype=int64) 
    
  • flatnonzero

    >>> np.flatnonzero(fac == 'c') 
    array([5, 6, 7], dtype=int64) 
    
相關問題