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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *