Come risolvere il problema: l'oggetto 'numpy.ndarray' non ha l'attributo 'index'
Un errore che potresti riscontrare durante l’utilizzo di NumPy è:
AttributeError : 'numpy.ndarray' object has no attribute 'index'
Questo errore si verifica quando si tenta di utilizzare la funzione indice() su un array NumPy, per il quale non sono disponibili attributi di indice.
L’esempio seguente mostra come risolvere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di avere il seguente array NumPy:
import numpy as np #create NumPy array x = np. array ([4, 7, 3, 1, 5, 9, 9, 15, 9, 18])
Possiamo usare la seguente sintassi per trovare i valori minimo e massimo nell’array:
#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
Supponiamo ora di cercare di trovare la posizione dell’indice dei valori minimo e massimo nell’array:
#attempt to print index position of minimum value
x. index (min_val)
AttributeError : 'numpy.ndarray' object has no attribute 'index'
Riceviamo un errore perché non possiamo applicare una funzione index() a un array NumPy.
Come risolvere l’errore
Per trovare la posizione dell’indice dei valori minimo e massimo nell’array NumPy, possiamo utilizzare la funzione 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]),)
Dal risultato possiamo vedere:
- Il valore minimo dell’array si trova nella posizione dell’indice 3 .
- Il valore massimo dell’array si trova nella posizione dell’indice 9 .
Possiamo usare questa stessa sintassi generale per trovare la posizione dell’indice di qualsiasi valore in un array NumPy.
Ad esempio, possiamo utilizzare la seguente sintassi per trovare quali posizioni dell’indice equivalgono al valore 9 nell’array NumPy:
#find index positions that are equal to the value 9
n.p. where (x == 9 )
(array([5, 6, 8]),)
Dal risultato possiamo vedere che i valori nelle posizioni dell’indice 5, 6 e 8 sono tutti uguali a 9 .
Risorse addizionali
I seguenti tutorial spiegano come correggere altri errori comuni in Python:
Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme