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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *