Jak naprawić: valueerror: ustawienie elementu tablicy z sekwencją


Błąd, który możesz napotkać podczas korzystania z Pythona, to:

 ValueError : setting an array element with a sequence.

Ten błąd występuje zwykle podczas próby zgrupowania wielu liczb w jedną pozycję w tablicy NumPy.

Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.

Jak odtworzyć błąd

Załóżmy, że mamy następującą tablicę NumPy:

 import numpy as np

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

Załóżmy teraz, że próbujemy umieścić dwie liczby na pierwszej pozycji tablicy:

 #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.

Błąd mówi nam dokładnie, co zrobiliśmy źle: próbowaliśmy zdefiniować element tablicy NumPy za pomocą sekwencji wartości.

W szczególności staraliśmy się umieścić wartości „4” i „5” na pierwszej pozycji tablicy NumPy.

Nie jest to możliwe, dlatego pojawia się błąd.

Jak naprawić błąd

Sposobem na naprawienie tego błędu jest po prostu przypisanie wartości do pierwszej pozycji tablicy:

 #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])

Pamiętaj, że nie otrzymujemy żadnych błędów.

Jeśli rzeczywiście chcemy przypisać dwie nowe wartości elementom tablicy, musimy zastosować następującą składnię:

 #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])

Należy pamiętać, że dwie pierwsze wartości w tabeli zostały zmienione, natomiast wszystkie pozostałe wartości pozostały takie same.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:

Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *