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