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

Einen Kommentar hinzufügen

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