Jak naprawić: obiekt „numpy.float64” nie może być interpretowany jako int


Błąd, który możesz napotkać podczas korzystania z NumPy, to:

 TypeError : 'numpy.float64' object cannot be interpreted as an integer

Ten błąd występuje, gdy podasz liczbę zmiennoprzecinkową do funkcji, która oczekuje liczby całkowitej.

Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.

Jak odtworzyć błąd

Załóżmy, że spróbujemy użyć poniższej pętli for do wydrukowania różnych liczb w tablicy 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

Otrzymujemy błąd, ponieważ funkcja range() oczekuje liczby całkowitej, ale wartości w tablicy NumPy są zmiennoprzecinkowe.

Jak naprawić błąd

Istnieją dwa sposoby szybkiego naprawienia tego błędu:

Metoda 1: Użyj funkcji int().

Jednym ze sposobów naprawienia tego błędu jest po prostu zawinięcie wywołania int() w następujący sposób:

 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)

Używając funkcji int() , konwertujemy każdą wartość zmiennoprzecinkową w tablicy NumPy na liczbę całkowitą, aby uniknąć napotkanego wcześniej błędu TypeError .

Metoda 2: Użyj funkcji .astype(int).

Innym sposobem naprawienia tego błędu jest najpierw konwersja wartości tablicy NumPy na liczby całkowite:

 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)

Stosując tę metodę, ponownie unikamy błędu TypeError .

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *