Come risolvere il problema: typeerror: impossibile ridurre con il tipo flessibile
Un errore che potresti riscontrare quando usi Python è:
ValueError : cannot perform reduce with flexible type
Questo errore si verifica quando tenti di eseguire un calcolo su un oggetto in Python che non è numerico.
L’esempio seguente mostra come correggere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di avere il seguente array 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
Stiamo ricevendo un TypeError perché abbiamo provato a calcolare la mediana di un elenco di valori stringa.
Come correggere l’errore
Il modo più semplice per correggere questo errore è semplicemente convertire l’array NumPy in un oggetto float in modo da poter eseguire operazioni matematiche su di esso.
Il codice seguente mostra come eseguire questa operazione:
#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')
Ora possiamo eseguire operazioni matematiche sull’array 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
Tieni presente che non riceviamo alcun errore perché l’array NumPy è un oggetto float, il che significa che possiamo eseguire operazioni matematiche su di esso.
Risorse addizionali
I seguenti tutorial spiegano come correggere altri errori comuni in Python:
Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme