Oplossing: 'numpy.ndarray'-object heeft geen 'index'-attribuut
Een fout die u kunt tegenkomen bij het gebruik van NumPy is:
AttributeError : 'numpy.ndarray' object has no attribute 'index'
Deze fout treedt op wanneer u probeert de functie index() te gebruiken op een NumPy-array, waarvoor geen indexkenmerken beschikbaar zijn.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt oplossen.
Hoe de fout te reproduceren
Stel dat we de volgende NumPy-array hebben:
import numpy as np #create NumPy array x = np. array ([4, 7, 3, 1, 5, 9, 9, 15, 9, 18])
We kunnen de volgende syntaxis gebruiken om de minimum- en maximumwaarden in de array te vinden:
#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
Stel nu dat we proberen de indexpositie van de minimum- en maximumwaarden in de array te vinden:
#attempt to print index position of minimum value
x. index (min_val)
AttributeError : 'numpy.ndarray' object has no attribute 'index'
We ontvangen een foutmelding omdat we een index() -functie niet kunnen toepassen op een NumPy-array.
Hoe u de fout kunt oplossen
Om de indexpositie van de minimum- en maximumwaarden in de NumPy-array te vinden, kunnen we de functie NumPywhere () gebruiken:
#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]),)
Uit het resultaat kunnen we zien:
- De minimumwaarde van de array bevindt zich op indexpositie 3 .
- De maximale waarde van de array bevindt zich op indexpositie 9 .
We kunnen dezelfde algemene syntaxis gebruiken om de indexpositie van elke waarde in een NumPy-array te vinden.
We kunnen bijvoorbeeld de volgende syntaxis gebruiken om te bepalen welke indexposities gelijk zijn aan de waarde 9 in de NumPy-array:
#find index positions that are equal to the value 9
n.p. where (x == 9 )
(array([5, 6, 8]),)
Uit het resultaat kunnen we zien dat de waarden op indexposities 5, 6 en 8 allemaal gelijk zijn aan 9 .
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Hoe KeyError in Panda’s te repareren
Oplossing: ValueError: Kan float NaN niet naar int converteren
Oplossing: ValueError: Operanden konden niet worden uitgezonden met vormen