Как исправить: TypeError: невозможно выполнить сокращение с гибким типом


Одна ошибка, с которой вы можете столкнуться при использовании 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
np.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
np.median (data_new)

5.5

#calculate mean value of array
np.mean (data_new)

6.0

#calculate max value of array
np.max (data_new)

12.0

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

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.