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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *