2013-08-06 13 views
17

In Python possiamo ottenere l'indice di un valore in un array usando .index(). Come posso farlo con un array NumPy?Indice dell'elemento nell'array NumPy

Quando provo a fare

decoding.index(i) 

si dice che la biblioteca NumPy non supporta questa funzione. C'è un modo per farlo?

risposta

27

Utilizzare np.where per ottenere gli indici in cui una determinata condizione è True.

Esempi:

Per un 2D np.ndarray:

i,j = np.where(a==value) 

Per una matrice 1D:

i, = np.where(a==value) 

funziona Se anche per condizioni come >=, <=, != ecc ..

È possibile anche creare una sottoclasse di np.ndarray con un metodo index():

class myarray(np.ndarray): 
    def __new__(cls, *args, **kwargs): 
     return np.array(*args, **kwargs).view(myarray) 
    def index(self, value): 
     return np.where(self==value) 

Testing:

a = myarray([1,2,3,4,4,4,5,6,4,4,4]) 
a.index(4) 
#(array([ 3, 4, 5, 8, 9, 10]),) 
2

Sono combattuto tra questi due modi di attuare un indice di una matrice NumPy:

idx = list(classes).index(var) 
idx = np.where(classes == var) 

Entrambi hanno lo stesso numero di caratteri, ma il secondo metodo restituisce uno int anziché uno nparray.