Як виправити: лише масиви розміром 1 можна перетворити на скаляри python
Під час використання Python може виникнути така помилка:
TypeError : only size-1 arrays can be converted to Python scalars
Ця помилка найчастіше виникає при спробі використовувати np.int() для перетворення масиву NumPy значень з плаваючою точкою в масив цілих значень.
Однак ця функція приймає лише одне значення замість масиву значень.
Замість цього ви повинні використовувати x.astype(int) , щоб перетворити масив NumPy значень з плаваючою точкою в масив цілих значень, оскільки ця функція здатна приймати масив.
У наступному прикладі показано, як виправити цю помилку на практиці.
Як відтворити помилку
Припустімо, ми створюємо наступний масив NumPy значень з плаваючою точкою:
import numpy as np #create NumPy array of float values x = np. array ([3, 4.5, 6, 7.7, 9.2, 10, 12, 14.1, 15])
Тепер припустимо, що ми спробуємо перетворити цей масив значень з плаваючою точкою в масив цілих значень:
#attempt to convert array to integer values
n.p. int (x)
TypeError : only size-1 arrays can be converted to Python scalars
Ми отримуємо TypeError , оскільки функція np.int() приймає лише окремі значення, а не масив значень.
Як виправити помилку
Щоб перетворити масив NumPy значень з плаваючою точкою в цілі числа, ми можемо використовувати наступний код:
#convert array of float values to integer values
x. astype (int)
array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])
Зверніть увагу, що масив значень було перетворено на цілі числа, і ми не отримуємо жодних помилок, оскільки функція astype() здатна обробляти масив значень.
Примітка . Ви можете знайти повну документацію для функції astype() тут .
Додаткові ресурси
У наступних посібниках пояснюється, як виправити інші типові помилки в Python:
Як виправити KeyError у Pandas
Як виправити: ValueError: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами