Como corrigir: valueerror: definindo um elemento de matriz com uma sequência
Um erro que você pode encontrar ao usar Python é:
ValueError : setting an array element with a sequence.
Este erro geralmente ocorre ao tentar agrupar vários números em uma única posição em uma matriz NumPy.
O exemplo a seguir mostra como corrigir esse erro na prática.
Como reproduzir o erro
Suponha que temos o seguinte array NumPy:
import numpy as np #create NumPy array data = np. array ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Agora suponha que estamos tentando colocar dois números na primeira posição do array:
#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.
O erro nos diz exatamente o que fizemos de errado: tentamos definir um elemento do array NumPy com uma sequência de valores.
Em particular, tentamos colocar os valores “4” e “5” na primeira posição do array NumPy.
Isso não é possível, então recebemos um erro.
Como corrigir o erro
A maneira de corrigir esse erro é simplesmente atribuir um valor à primeira posição do array:
#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])
Observe que não estamos recebendo nenhum erro.
Se realmente quisermos atribuir dois novos valores aos elementos do array, precisaremos usar a seguinte sintaxe:
#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])
Observe que os dois primeiros valores foram alterados na tabela enquanto todos os outros valores permaneceram os mesmos.
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas