Jak naprawić: typeerror: nie można zmniejszyć za pomocą elastycznego typu
Błąd, który możesz napotkać podczas korzystania z Pythona, to:
ValueError : cannot perform reduce with flexible type
Ten błąd występuje, gdy próbujesz wykonać obliczenia na obiekcie w Pythonie, który nie jest liczbowy.
Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.
Jak odtworzyć błąd
Załóżmy, że mamy następującą tablicę NumPy:
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
Otrzymujemy błąd TypeError , ponieważ próbowaliśmy obliczyć medianę listy wartości łańcuchowych.
Jak naprawić błąd
Najłatwiejszym sposobem naprawienia tego błędu jest po prostu konwersja tablicy NumPy na obiekt zmiennoprzecinkowy, abyśmy mogli wykonywać na niej operacje matematyczne.
Poniższy kod pokazuje, jak to zrobić:
#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')
Możemy teraz wykonywać operacje matematyczne na tablicy NumPy:
#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
Należy pamiętać, że nie otrzymujemy żadnych błędów, ponieważ tablica NumPy jest obiektem zmiennoprzecinkowym, co oznacza, że możemy na niej wykonywać operacje matematyczne.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:
Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami