Oplossing: typeerror: kan niet verkleinen met flexibel type
Een fout die u kunt tegenkomen bij het gebruik van Python is:
ValueError : cannot perform reduce with flexible type
Deze fout treedt op wanneer u probeert een berekening uit te voeren op een object in Python dat niet numeriek is.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.
Hoe de fout te reproduceren
Stel dat we de volgende NumPy-array hebben:
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
We ontvangen een TypeError omdat we hebben geprobeerd de mediaan van een lijst met tekenreekswaarden te berekenen.
Hoe u de fout kunt oplossen
De eenvoudigste manier om deze fout op te lossen is door de NumPy-array eenvoudigweg naar een float-object te converteren, zodat we er wiskundige bewerkingen op kunnen uitvoeren.
De volgende code laat zien hoe u dit doet:
#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')
We kunnen nu wiskundige bewerkingen uitvoeren op de NumPy-array:
#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
Merk op dat we geen fouten ontvangen omdat de NumPy-array een float-object is, wat betekent dat we er wiskundige bewerkingen op kunnen uitvoeren.
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