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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *