So beheben sie folgendes: typeerror: reduzierung mit flexiblem typ nicht möglich


Ein Fehler, der bei der Verwendung von Python auftreten kann, ist:

 ValueError : cannot perform reduce with flexible type

Dieser Fehler tritt auf, wenn Sie versuchen, eine Berechnung für ein Objekt in Python durchzuführen, das nicht numerisch ist.

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir haben das folgende NumPy-Array:

 import numpy as np

#define NumPy array of values
data = np. array (['1', '2', '3', '4', '7', '9', '10', '12'])

#attempt to calculate median of values
n.p. median (data)

TypeError : cannot perform reduce with flexible type

Wir erhalten einen TypeError, weil wir versucht haben, den Median einer Liste von Zeichenfolgenwerten zu berechnen.

So beheben Sie den Fehler

Der einfachste Weg, diesen Fehler zu beheben, besteht darin, das NumPy-Array einfach in ein Float-Objekt zu konvertieren, damit wir mathematische Operationen daran ausführen können.

Der folgende Code zeigt, wie das geht:

 #convert NumPy array of string values to float values
data_new = data. astype (float)

#view updated NumPy array
data_new

array([ 1., 2., 3., 4., 7., 9., 10., 12.])

#check data type of array
data_new. dtype

dtype('float64')

Wir können jetzt mathematische Operationen am NumPy-Array durchführen:

 #calculate median value of array
n.p. median (data_new)

5.5

#calculate mean value of array
n.p. mean (data_new)

6.0

#calculate max value of array
n.p. max (data_new)

12.0

Beachten Sie, dass wir keine Fehler erhalten, da das NumPy-Array ein Float-Objekt ist, was bedeutet, dass wir mathematische Operationen daran ausführen können.

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