Jak naprawić: obiekt „numpy.ndarray” nie ma atrybutu „indeks”.
Błąd, który możesz napotkać podczas korzystania z NumPy, to:
AttributeError : 'numpy.ndarray' object has no attribute 'index'
Ten błąd występuje podczas próby użycia funkcji indeksu() w tablicy NumPy, dla której nie są dostępne żadne atrybuty indeksu.
Poniższy przykład pokazuje, jak w praktyce rozwiązać ten błąd.
Jak odtworzyć błąd
Załóżmy, że mamy następującą tablicę NumPy:
import numpy as np #create NumPy array x = np. array ([4, 7, 3, 1, 5, 9, 9, 15, 9, 18])
Aby znaleźć wartości minimalne i maksymalne w tablicy, możemy zastosować następującą składnię:
#find minimum and maximum values of array
min_val = np. min (x)
max_val = np. max (x)
#print minimum and maximum values
print (min_val, max_val)
1 18
Załóżmy teraz, że próbujemy znaleźć pozycję indeksu wartości minimalnej i maksymalnej w tablicy:
#attempt to print index position of minimum value
x. index (min_val)
AttributeError : 'numpy.ndarray' object has no attribute 'index'
Otrzymujemy błąd, ponieważ nie możemy zastosować funkcji indeksu() do tablicy NumPy.
Jak rozwiązać problem
Aby znaleźć pozycję indeksu wartości minimalnej i maksymalnej w tablicy NumPy, możemy skorzystać z funkcji NumPywhere () :
#find index position of minimum value
n.p. where (x == min_val)
(array([3]),)
#find index position of maximum value
n.p. where (x == max_val)
(array([9]),)
Z wyniku możemy zobaczyć:
- Minimalna wartość tablicy znajduje się na pozycji indeksu 3 .
- Maksymalna wartość tablicy znajduje się na pozycji indeksu 9 .
Możemy użyć tej samej ogólnej składni, aby znaleźć pozycję indeksu dowolnej wartości w tablicy NumPy.
Na przykład możemy użyć następującej składni, aby znaleźć, które pozycje indeksu w tablicy NumPy mają wartość 9:
#find index positions that are equal to the value 9
n.p. where (x == 9 )
(array([5, 6, 8]),)
Z wyniku widzimy, że wszystkie wartości na pozycjach indeksu 5, 6 i 8 są równe 9 .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:
Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami