Как исправить: ошибка типа: невозможно уменьшить с помощью гибкого типа.
Ошибка, с которой вы можете столкнуться при использовании 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: операнды не могут быть переданы с помощью фигур.