Як виправити: 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 n.p. median (data) TypeError : cannot perform reduce with flexible type
Ми отримуємо TypeError , оскільки ми намагалися обчислити медіану списку рядкових значень.
Як виправити помилку
Найпростіший спосіб виправити цю помилку — просто перетворити масив NumPy на об’єкт float, щоб ми могли виконувати над ним математичні операції.
Наступний код показує, як це зробити:
#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: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами