Как исправить: ошибка типа: невозможно уменьшить с помощью гибкого типа.


Ошибка, с которой вы можете столкнуться при использовании Python:

 ValueError : cannot perform reduce with flexible type

Эта ошибка возникает, когда вы пытаетесь выполнить расчет для объекта Python, который не является числовым.

В следующем примере показано, как исправить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, у нас есть следующий массив 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

Мы получаем ошибку TypeError , поскольку пытались вычислить медиану списка строковых значений.

Как исправить ошибку

Самый простой способ исправить эту ошибку — просто преобразовать массив NumPy в объект с плавающей запятой, чтобы мы могли выполнять над ним математические операции.

Следующий код показывает, как это сделать:

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

Теперь мы можем выполнять математические операции с массивом 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

Обратите внимание, что мы не получаем никаких ошибок, поскольку массив NumPy является объектом с плавающей запятой, а это значит, что мы можем выполнять над ним математические операции.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:

Как исправить ошибку KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *