Come risolvere il problema: valueerror: impostazione di un elemento dell'array con una sequenza
Un errore che potresti riscontrare quando usi Python è:
ValueError : setting an array element with a sequence.
Questo errore si verifica in genere quando si tenta di raggruppare più numeri in un’unica posizione in un array NumPy.
L’esempio seguente mostra come correggere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di avere il seguente array NumPy:
import numpy as np #create NumPy array data = np. array ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Supponiamo ora di provare a posizionare due numeri nella prima posizione dell’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.
L’errore ci dice esattamente cosa abbiamo sbagliato: abbiamo provato a definire un elemento dell’array NumPy con una sequenza di valori.
In particolare abbiamo provato a posizionare i valori “4” e “5” nella prima posizione dell’array NumPy.
Questo non è possibile, quindi riceviamo un errore.
Come correggere l’errore
Il modo per correggere questo errore è semplicemente assegnare un valore alla prima posizione dell’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])
Tieni presente che non stiamo ricevendo alcun errore.
Se vogliamo effettivamente assegnare due nuovi valori agli elementi dell’array, dobbiamo utilizzare la seguente sintassi:
#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])
Da notare che i primi due valori nella tabella sono stati modificati mentre tutti gli altri valori sono rimasti gli stessi.
Risorse addizionali
I seguenti tutorial spiegano come correggere altri errori comuni in Python:
Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme