2013-08-06 10 views
17

W Pythonie możemy uzyskać indeks wartości w tablicy przy użyciu .Index(). Jak mogę to zrobić za pomocą tablicy NumPy?indeks elementu tablicy w numpy

Kiedy próbuję zrobić

decoding.index(i) 

mówi, że biblioteka NumPy nie obsługuje tej funkcji. Czy jest jakiś sposób na zrobienie tego?

Odpowiedz

27

Zastosowanie np.where uzyskać indeksy gdzie dany warunek jest True.

Przykłady:

Do 2D np.ndarray:

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

Dla 1D tablicy:

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

działa, jeśli również warunków, takich jak >=, <=, != itd ..

Możesz również utworzyć podklasę np.ndarray z index() metody:

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) 

Testowanie:

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

Jestem rozdarta pomiędzy tymi dwoma sposobami realizacji indeks tablicy numpy:

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

Obie mają taką samą liczbę znaków, ale druga metoda zwraca wartość int, zamiast nparray.

Powiązane problemy