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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.