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