Como corrigir: typeerror: não é possível reduzir com tipo flexível


Um erro que você pode encontrar ao usar Python é:

 ValueError : cannot perform reduce with flexible type

Este erro ocorre quando você tenta realizar um cálculo em um objeto em Python que não é numérico.

O exemplo a seguir mostra como corrigir esse erro na prática.

Como reproduzir o erro

Suponha que temos o seguinte 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

Estamos recebendo um TypeError porque tentamos calcular a mediana de uma lista de valores de string.

Como corrigir o erro

A maneira mais fácil de corrigir esse erro é simplesmente converter o array NumPy em um objeto flutuante para que possamos realizar operações matemáticas nele.

O código a seguir mostra como fazer isso:

 #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')

Agora podemos realizar operações matemáticas no 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

Observe que não recebemos nenhum erro porque o array NumPy é um objeto flutuante, o que significa que podemos realizar operações matemáticas nele.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:

Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *