Lösung: das objekt „numpy.float64“ kann nicht als int interpretiert werden
Ein Fehler, der bei der Verwendung von NumPy auftreten kann, ist:
TypeError : 'numpy.float64' object cannot be interpreted as an integer
Dieser Fehler tritt auf, wenn Sie einer Funktion, die eine Ganzzahl erwartet, einen Gleitkommawert bereitstellen.
Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.
So reproduzieren Sie den Fehler
Angenommen, wir versuchen, die folgende for-Schleife zu verwenden, um verschiedene Zahlen in ein NumPy-Array zu drucken:
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
Wir erhalten eine Fehlermeldung, weil die Funktion range() eine Ganzzahl erwartet, die Werte im NumPy-Array jedoch Gleitkommazahlen sind.
So beheben Sie den Fehler
Es gibt zwei Möglichkeiten, diesen Fehler schnell zu beheben:
Methode 1: Verwenden Sie die Funktion int()
Eine Möglichkeit, diesen Fehler zu beheben, besteht darin, den Aufruf einfach wie folgt mit int() zu umschließen:
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)
Mit der Funktion int() konvertieren wir jeden Float-Wert im NumPy-Array in eine Ganzzahl, um den zuvor aufgetretenen TypeError zu vermeiden.
Methode 2: Verwenden Sie die Funktion .astype(int).
Eine andere Möglichkeit, diesen Fehler zu beheben, besteht darin, zunächst die NumPy-Array-Werte in Ganzzahlen umzuwandeln:
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)
Durch die Verwendung dieser Methode vermeiden wir den TypeError erneut.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:
So beheben Sie KeyError in Pandas
So beheben Sie: ValueError: Float NaN kann nicht in int konvertiert werden
So beheben Sie: ValueError: Operanden konnten nicht mit Formen übertragen werden