Oplossing: object 'numpy.float64' kan niet worden geïnterpreteerd als een int


Een fout die u kunt tegenkomen bij het gebruik van NumPy is:

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

Deze fout treedt op wanneer u een float opgeeft voor een functie die een geheel getal verwacht.

Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.

Hoe de fout te reproduceren

Stel dat we de volgende for-lus proberen te gebruiken om verschillende getallen in een NumPy-array af te drukken:

 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

We krijgen een foutmelding omdat de functie range() een geheel getal verwacht, maar de waarden in de NumPy-array zijn floats.

Hoe u de fout kunt oplossen

Er zijn twee manieren om deze fout snel op te lossen:

Methode 1: Gebruik de functie int().

Eén manier om deze fout op te lossen, is door de oproep eenvoudigweg als volgt in int() te plaatsen:

 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)

Met behulp van de functie int() converteren we elke float-waarde in de NumPy-array naar een geheel getal om de TypeError die we eerder tegenkwamen te vermijden.

Methode 2: Gebruik de functie .astype(int).

Een andere manier om deze fout op te lossen is door eerst de NumPy-arraywaarden naar gehele getallen te converteren:

 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)

Door deze methode te gebruiken vermijden we de TypeError opnieuw.

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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert