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