Fix ValueError: Festlegen eines Array-Elements mit einer Sequenz in Python

Zeeshan Afridi 8 Oktober 2023
  1. Numpy-Array in Python
  2. Erstellen Sie ein Numpy-Array in Python
  3. Ursachen für den Fehler ValueError: seting an array element with a sequence in Python
  4. Beheben Sie den Fehler ValueError: setting an array element with a sequence in Python
Fix ValueError: Festlegen eines Array-Elements mit einer Sequenz in Python

In Python ist das Array eine der gebräuchlichsten und nützlichsten Datenstrukturen, eine Sammlung von mehr als einem Wert. Auf die Elemente des Arrays wird über die Indizes zugegriffen, die die Position des Elements darstellen.

Möglicherweise haben Sie irgendwann mit dem Fehler ValueError: set an array element with a sequence interagiert. Dieser ValueError tritt hauptsächlich in zwei Szenarien auf; Der erste ist, wenn Sie versuchen, einem einzelnen Array-Index mehrere Werte zuzuweisen, und der zweite, wenn Sie versuchen, dem definierten Array einen ungültigen Datentyp zuzuweisen.

Wie wir wissen, sind Arrays von Natur aus homogen. Sie akzeptieren einen einzigen Datentyp im gesamten Array.

Numpy-Array in Python

Numpy ist eine Open Source-Bibliothek, die am häufigsten für Metriken, lineare Algebra, Fourier-Transformation usw. verwendet wird. Sie wurde 2005 von Travis Oliphant erstellt.

In Python haben wir Listen, die uns den Zweck von Arrays liefern, aber die Numpy-Ersteller behaupten, dass sie 50-mal schnellere Arrays als Listen beweisen. Dies ist einer der Hauptzwecke der Verwendung des Numpy-Arrays.

Erstellen Sie ein Numpy-Array in Python

Die Syntax des Numpy-Arrays ist sehr einfach. Sie müssen die Bibliothek numpy in Ihr Programm importieren und entsprechend verwenden.

# import numpy library
import numpy as np

# creating a numpy array
arr = np.array([1, 2, 4, 5, 6])

print(arr)

Ausgang:

[1 2 4 5 6]

Wir können auch ein herkömmliches Array in ein Numpy-Array konvertieren.

# import numpy library
import numpy as np

conventional_array = [1, 2, 3, 4, 5]
print("The data type conventional array is: ", type(conventional_array))

# converting a conventional array into a numpy array
arr = np.array(conventional_array)

print("The data type of numpy array is: ", type(arr))
print(arr)

Ausgang:

The data type conventional array is:  <class 'list'>
The data type of numpy array is:  <class 'numpy.ndarray'>
[1 2 3 4 5]

Der Typ des herkömmlichen Arrays gehört zur Klasse list, während es nach der Umwandlung in ein Numpy-Array nun zur Klasse numpy.ndarray gehört.

Ursachen für den Fehler ValueError: seting an array element with a sequence in Python

Wie bereits erwähnt, tritt der Fehler ValueError: setting an array element with a sequence in Python auf, wenn Sie versuchen, einer einzelnen Position mehr als einen Wert oder einem Array falsche Datentypen zuzuweisen. Wie wir wissen, sind Arrays homogene Datenstrukturen, die nicht mehrere Datentypen in einem einzigen Array speichern können.

Lassen Sie uns diese beiden Szenarien anhand von Beispielen verstehen.

# import numpy library
import numpy as np

arr = [1, 2, 3, 4, 5, 6, 7]
numpy_arr = np.array(arr)

# print the element at 0 index, which is the first element
print("The first element of the array: ", numpy_arr[0])

# assign two values (1,2) to the 0th index  --> Error
numpy_arr[0] = 1, 2

Ausgang:

The first element of the array:  1
ValueError: setting an array element with a sequence.

Wie Sie im letzten Code des obigen Programms sehen können, erhalten wir beim Versuch, dem Index 0 von numpy_arr zwei Werte 1,2 zuzuweisen, den Fehler ValueError: set a array element with a sequence.

Das liegt daran, dass wir nur einen einzigen Wert in einem Index speichern können. Wir können es jedoch durch einen anderen Wert ersetzen, sodass ein einzelner Index auf einen einzelnen Wert zeigt.

Schauen wir uns nun das zweite Szenario an.

# import numpy library
import numpy as np

# Creating an array
array1 = [1, 2, [0, 0], 4, 5]
print(array1)
print("The data type of the conventional array is: ", type(array1))

# This causes Value error
np_array = np.array(array1, int)

print("\n", np_array)
print("The data type of of numpy array is: ", type(np_array))

Ausgang:

[1, 2, [0, 0], 4, 5]
The data type of the conventional array is:  <class 'list'>
ValueError: setting an array element with a sequence.

In diesem Fall ist der Datentyp, den wir dem numpy array zugewiesen haben, für diesen Fehler verantwortlich. In dieser Anweisung np_array = np.array(array1, int) verursacht der zweite Parameter int diesen Fehler.

Wie Sie sehen können, ist die Klasse von array1 eine Liste, daher ist es nicht möglich, sie direkt in int umzuwandeln.

Beheben Sie den Fehler ValueError: setting an array element with a sequence in Python

Wir haben nun in den obigen Beispielen gesehen, was den ValueError verursacht. Lassen Sie uns einen Blick darauf werfen und verstehen, wie dieser ValueError behoben werden kann.

Das erste Szenario ist sehr einfach. Sie weisen einem einzelnen Index nur einen Wert zu.

# import numpy library
import numpy as np

# creating a numpy array
numpy_arr = np.array([1, 2, 3, 4, 5])
print(numpy_arr)

# assigning 0 value at the 0th index
numpy_arr[0] = 0
print(numpy_arr)

Ausgang:

[1 2 3 4 5]
[0 2 3 4 5]

Im zweiten Szenario können wir einen universellen Datentyp verwenden, der in jedem Fall akzeptiert wird, object. Sehen wir es uns im Beispiel unten an.

# import numpy library
import numpy as np

# creating an array
arr = [1, 2, [9, 8], 3, 4]

# This causes Value error
np_arr = np.array(arr, object)

print(np_arr)

Ausgang:

[1 2 list([9, 8]) 3 4]

Wie Sie sehen können, lief das Programm reibungslos, nachdem wir den Datentyp von int auf object geändert hatten. Da object der universelle Datentyp ist, behandelt es jeden Teil des Arrays als Objekt, egal ob es sich um eine Liste oder einen einzelnen Int-Wert handelt.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Verwandter Artikel - Python Error