Problemlösung: nur arrays der größe 1 können in python-skalare konvertiert werden
Ein Fehler, der bei der Verwendung von Python auftreten kann, ist:
TypeError : only size-1 arrays can be converted to Python scalars
Dieser Fehler tritt am häufigsten auf, wenn versucht wird, mit np.int() ein NumPy-Array mit Gleitkommawerten in ein Array mit Ganzzahlwerten umzuwandeln.
Diese Funktion akzeptiert jedoch nur einen einzelnen Wert anstelle eines Arrays von Werten.
Stattdessen sollten Sie x.astype(int) verwenden, um ein NumPy-Array mit Float-Werten in ein Array mit Ganzzahlwerten zu konvertieren, da diese Funktion ein Array akzeptieren kann.
Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.
So reproduzieren Sie den Fehler
Angenommen, wir erstellen das folgende NumPy-Array mit Float-Werten:
import numpy as np #create NumPy array of float values x = np. array ([3, 4.5, 6, 7.7, 9.2, 10, 12, 14.1, 15])
Nehmen wir nun an, wir versuchen, dieses Array von Float-Werten in ein Array von Integer-Werten umzuwandeln:
#attempt to convert array to integer values
n.p. int (x)
TypeError : only size-1 arrays can be converted to Python scalars
Wir erhalten einen TypeError , weil die Funktion np.int() nur einzelne Werte akzeptiert, kein Array von Werten.
So beheben Sie den Fehler
Um ein NumPy-Array von Float-Werten in Ganzzahlwerte umzuwandeln, können wir den folgenden Code verwenden:
#convert array of float values to integer values
x. astype (int)
array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])
Beachten Sie, dass das Wertearray in Ganzzahlen konvertiert wurde und wir keine Fehler erhalten, da die Funktion astype() ein Wertearray verarbeiten kann.
Hinweis : Die vollständige Dokumentation für die Funktion astype() finden Sie hier .
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