Как исправить: ValueError: установка элемента массива с последовательностью


Одна ошибка, с которой вы можете столкнуться при использовании Python:

ValueError : setting an array element with a sequence.

Эта ошибка обычно возникает, когда вы пытаетесь втиснуть несколько чисел в одну позицию в массиве NumPy.

В следующем примере показано, как исправить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, у нас есть следующий массив NumPy:

import numpy as np

#create NumPy array
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

Теперь предположим, что мы пытаемся втиснуть два числа в первую позицию массива:

#attempt to cram values '4' and '5' both into first position of NumPy array
data[0] = np.array([4,5])

ValueError : setting an array element with a sequence.

Ошибка говорит нам, что именно мы сделали неправильно: мы попытались установить один элемент в массиве NumPy с последовательностью значений.

В частности, мы попытались втиснуть значения «4» и «5» в первую позицию массива NumPy.

Это невозможно сделать, поэтому мы получаем ошибку.

Как исправить ошибку

Способ исправить эту ошибку — просто присвоить одно значение первой позиции массива:

#assign the value '4' to the first position of the array
data[0] = np.array([4])

#view updated array
data

array([ 4, 2, 3, 4, 5, 6, 7, 8, 9, 10])

Обратите внимание, что мы не получаем никаких ошибок.

Если мы действительно хотим присвоить два новых значения элементам массива, нам нужно использовать следующий синтаксис:

#assign the values '4' and '5' to the first two positions of the array
data[0:2] = np.array([4, 5])

#view updated array
data

array([ 4, 5, 3, 4, 5, 6, 7, 8, 9, 10])

Обратите внимание, что первые два значения в массиве были изменены, а все остальные значения остались прежними.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:

Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами

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