Come risolvere il problema: l'oggetto 'numpy.float64' non può essere interpretato come un int
Un errore che potresti riscontrare durante l’utilizzo di NumPy è:
TypeError : 'numpy.float64' object cannot be interpreted as an integer
Questo errore si verifica quando fornisci un float a una funzione che prevede un numero intero.
L’esempio seguente mostra come correggere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di provare a utilizzare il seguente ciclo for per stampare numeri diversi in un array NumPy:
import numpy as np #define array of values data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4]) #use for loop to print out range of values at each index for i in range(len(data)): print (range(data[i])) TypeError : 'numpy.float64' object cannot be interpreted as an integer
Riceviamo un errore perché la funzione range() prevede un numero intero, ma i valori nell’array NumPy sono float.
Come correggere l’errore
Esistono due modi per correggere rapidamente questo errore:
Metodo 1: utilizzare la funzione int()
Un modo per correggere questo errore è semplicemente racchiudere la chiamata con int() come segue:
import numpy as np #define array of values data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4]) #use for loop to print out range of values at each index for i in range(len(data)): print (range(int(data[i]))) range(0, 3) range(0, 4) range(0, 5) range(0, 7) range(0, 10) range(0, 11)
Utilizzando la funzione int() , convertiamo ogni valore float nell’array NumPy in un numero intero per evitare il TypeError che abbiamo riscontrato in precedenza.
Metodo 2: utilizzare la funzione .astype(int).
Un altro modo per correggere questo errore è convertire prima i valori dell’array NumPy in numeri interi:
import numpy as np #define array of values data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4]) #convert array of floats to array of integers data_int = data. astype (int) #use for loop to print out range of values at each index for i in range(len(data)): print (range(data[i])) range(0, 3) range(0, 4) range(0, 5) range(0, 7) range(0, 10) range(0, 11)
Utilizzando questo metodo evitiamo nuovamente il TypeError .
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