Hinzufügen zu einem Array in Python
Einleitung
Python hat keinen eingebauten Array-Datentyp, es gibt jedoch Module, mit denen Sie mit Arrays arbeiten können. Dieser Artikel beschreibt, wie Sie mit den Modulen array und NumPy zu einem Array hinzufügen können. Das array-Modul ist nützlich, wenn Sie ein Array mit Ganzzahlen und Gleitkommazahlen erstellen müssen. Das NumPy-Modul ist nützlich, wenn Sie mathematische Operationen auf einem Array ausführen müssen.
In vielen Fällen können Sie Listen verwenden, um Arrays zu erstellen, da Listen Flexibilität bieten, wie z. B. gemischte Datentypen, und dennoch alle Merkmale eines Arrays aufweisen. Erfahren Sie mehr über Listen in Python.
Hinweis: Sie können einem Array nur Elemente des gleichen Datentyps hinzufügen. Ebenso können Sie nur zwei Arrays des gleichen Datentyps zusammenführen.
Hinzufügen von Elementen zu einem Array mit dem Array-Modul
Mit dem Array-Modul können Sie Arrays mit dem +
-Operator verketten (zusammenfügen) und mit den Methoden append()
, extend()
und insert()
Elemente zu einem Array hinzufügen.
Syntaxbeschreibung
+ Operator, x + y
: Gibt ein neues Array mit den Elementen aus zwei Arrays zurück.append(x)
: Fügt ein einzelnes Element am Ende des Arrays hinzu.extend(iterable)
: Fügt eine Liste, ein Array oder ein anderes Iterable am Ende des Arrays hinzu.insert(i, x)
: Fügt ein Element vor dem angegebenen Index des Arrays ein.
Das folgende Beispiel zeigt, wie Sie ein neues Array-Objekt erstellen, indem Sie zwei Arrays zusammenfügen:
import array
# Erstellen von Array-Objekten vom Typ Integer
arr1 = array.array('i', [1, 2, 3])
arr2 = array.array('i', [4, 5, 6])
# Ausgabe der Arrays
print("arr1 ist:", arr1)
print("arr2 ist:", arr2)
# Erstellen eines neuen Arrays, das alle Elemente beider Arrays enthält,
# und Ausgabe des Ergebnisses
arr3 = arr1 + arr2
print("Nach arr3 = arr1 + arr2, ist arr3:", arr3)
Die Ausgabe ist:
arr1 ist: array('i', [1, 2, 3])
arr2 ist: array('i', [4, 5, 6])
Nach arr3 = arr1 + arr2, ist arr3: array('i', [1, 2, 3, 4, 5, 6])
Das vorangegangene Beispiel erstellt ein neues Array, das alle Elemente der gegebenen Arrays enthält.
Das folgende Beispiel zeigt, wie Sie mithilfe der Methoden append()
, extend()
und insert()
zu einem Array hinzufügen können:
import array
# Erstellen von Array-Objekten vom Typ Integer
arr1 = array.array('i', [1, 2, 3])
arr2 = array.array('i', [4, 5, 6])
# Ausgabe der Arrays
print("arr1 ist:", arr1)
print("arr2 ist:", arr2)
# Hinzufügen einer Ganzzahl zu einem Array und Ausgabe des Ergebnisses
arr1.append(4)
print("\nNach arr1.append(4), ist arr1:", arr1)
# Erweiterung eines Arrays, indem ein weiteres Array des gleichen Typs hinzugefügt wird,
# und Ausgabe des Ergebnisses
arr1.extend(arr2)
print("\nNach arr1.extend(arr2), ist arr1:", arr1)
# Einfügen einer Ganzzahl vor Indexposition 0 und Ausgabe des Ergebnisses
arr1.insert(0, 10)
print("\nNach arr1.insert(0, 10), ist arr1:", arr1)
Die Ausgabe ist:
arr1 ist: array('i', [1, 2, 3])
arr2 ist: array('i', [4, 5, 6])
Nach arr1.append(4), ist arr1: array('i', [1, 2, 3, 4])
Nach arr1.extend(arr2), ist arr1: array('i', [1, 2, 3, 4, 4, 5, 6])
Nach arr1.insert(0, 10), ist arr1: array('i', [10, 1, 2, 3, 4, 4, 5, 6])
Im vorangegangenen Beispiel wird jede Methode auf das Array-Objekt arr1
angewendet und ändert das ursprüngliche Objekt.
Hinzufügen von Elementen zu einem NumPy-Array
Mit dem NumPy-Modul können Sie die Funktionen numpy.append()
und numpy.insert()
verwenden, um Elemente zu einem Array hinzuzufügen.
Syntaxbeschreibung
numpy.append(arr, values, axis=None)
: Fügt die Werte oder ein Array am Ende einer Kopie vonarr
an. Wenn die Achse nicht angegeben wird, lautet der StandardwertNone
, was bedeutet, dass sowohlarr
als auchvalues
vor der Append-Operation abgeflacht werden.numpy.insert(arr, obj, values, axis=None)
: Fügt die Werte oder ein Array vor dem Index (obj
) entlang der Achse ein. Wenn die Achse nicht angegeben wird, lautet der StandardwertNone
, was bedeutet, dass nurarr
abgeflacht wird, bevor die Einfügeoperation ausgeführt wird.
Die Funktion numpy.append()
verwendet im Hintergrund die Funktion numpy.concatenate()
. Sie können numpy.concatenate()
verwenden, um eine Sequenz von Arrays entlang einer vorhandenen Achse zu verbinden. Erfahren Sie mehr über Routinen zur Array-Manipulation in der NumPy-Dokumentation.
Hinweis: Sie müssen NumPy installieren, um den Beispielcode in diesem Abschnitt zu testen.
Hinzufügen zu einem Array mit numpy.append()
NumPy-Arrays können durch ihre Dimension und Form beschrieben werden. Wenn Sie Werte oder Arrays zu mehrdimensionalen Arrays hinzufügen, müssen die angehängten Arrays oder Werte die gleiche Form haben, ausgenommen entlang der angegebenen Achse.
Um die Form eines 2D-Arrays zu verstehen, betrachten Sie Zeilen und Spalten. array([[1, 2], [3, 4]])
hat eine Form von 2, 2, was 2 Zeilen und 2 Spalten entspricht, während array([[10, 20, 30], [40, 50, 60]])
eine Form von 2, 3 hat, was 2 Zeilen und 3 Spalten entspricht.
Testen Sie dieses Konzept mithilfe der interaktiven Python-Konsole. Importieren Sie zunächst das NumPy-Modul, erstellen Sie einige Arrays und prüfen Sie deren Form:
import numpy as np
np_arr1 = np.array([[1, 2], [3, 4]])
print(np_arr1)
Die Ausgabe ist:
[[1 2]
[3 4]]
Prüfen Sie die Form von np_arr1
:
np_arr1.shape
Die Ausgabe ist:
(2, 2)
Erstellen und geben Sie ein weiteres Array np_arr2
aus:
np_arr2 = np.array([[10, 20, 30], [40, 50, 60]])
print(np_arr2)
Die Ausgabe ist:
[[10 20 30]
[40 50 60]]
Prüfen Sie die Form von np_arr2
:
np_arr2.shape
Die Ausgabe ist:
(2, 3)
Versuchen Sie dann, Arrays entlang der verschiedenen Achsen anzuhängen. Zum Beispiel können Sie ein Array mit einer Form von 2, 3 an ein Array mit einer Form von 2, 2 entlang der Achse 1 (Spalten) anhängen, aber nicht entlang der Achse 0 (Zeilen):
np.append(np_arr1, np_arr2, axis=0)
Dies führt zu einem ValueError, da die Dimensionen entlang der Achse 0 nicht übereinstimmen:
ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 2 and the array at index 1 has size 3
Um erfolgreich anzuhängen, können Sie np_arr2
an np_arr1
entlang der Achse 1 (Spalten) anhängen:
np.append(np_arr1, np_arr2, axis=1)
Die Ausgabe ist:
array([[ 1, 2, 10, 20, 30],
[ 3, 4, 40, 50, 60]])
Sie können ein Array mit Spalten, die zwei Zeilen hoch sind, an ein anderes Array mit Spalten, die ebenfalls zwei Zeilen hoch sind, anhängen.
Das folgende Beispiel zeigt, wie Sie mit der Funktion numpy.append()
Elemente zu einem NumPy-Array hinzufügen können:
import numpy as np
# Erstellen von 2D-Array-Objekten (Ganzzahlen)
np_arr1 = np.array([[1, 2], [3, 4]])
np_arr2 = np.array([[10, 20], [30, 40]])
# Ausgabe der Arrays
print("np_arr1 ist:\n", np_arr1)
print("np_arr2 ist:\n", np_arr2)
# Anhängen eines Arrays an das Ende eines anderen Arrays und Ausgabe des Ergebnisses
# Beide Arrays werden vor dem Anhängen abgeflacht
append_axis_none = np.append(np_arr1, np_arr2, axis=None)
print("append_axis_none ist:\n", append_axis_none)
# Anhängen eines Arrays an das Ende eines anderen Arrays entlang der Achse 0 (Zeilen anhängen)
# und Ausgabe des Ergebnisses
append_axis_0 = np.append(np_arr1, np_arr2, axis=0)
print("append_axis_0 ist:\n", append_axis_0)
# Anhängen eines Arrays an das Ende eines anderen Arrays entlang der Achse 1 (Spalten anhängen)
# und Ausgabe des Ergebnisses
append_axis_1 = np.append(np_arr1, np_arr2, axis=1)
print("append_axis_1 ist:\n", append_axis_1)
Die Ausgabe ist:
np_arr1 ist:
[[1 2]
[3 4]]
np_arr2 ist:
[[10 20]
[30 40]]
append_axis_none ist:
[ 1 2 3 4 10 20 30 40]
append_axis_0 ist:
[[ 1 2]
[ 3 4]
[10 20]
[30 40]]
append_axis_1 ist:
[[ 1 2 10 20]
[ 3 4 30 40]]
Das vorangegangene Beispiel zeigt, wie die Funktion numpy.append()
für jede Achse des 2D-Arrays funktioniert und wie sich die Form des resultierenden Arrays ändert. Wenn die Achse 0 ist, wird das Array zeilenweise angehängt. Wenn die Achse 1 ist, wird das Array spaltenweise angehängt.
Hinzufügen zu einem Array mit numpy.insert()
Die Funktion numpy.insert()
fügt ein Array oder Werte vor dem angegebenen Index in ein anderes Array entlang einer Achse ein und gibt ein neues Array zurück.
Im Gegensatz zur Funktion numpy.append()
wird bei der Funktion numpy.insert()
, wenn die Achse nicht angegeben oder auf None gesetzt wird, nur das erste Array abgeflacht, und nicht die einzufügenden Werte oder das einzufügende Array. Sie erhalten einen ValueError, wenn Sie versuchen, ein 2D-Array in ein anderes 2D-Array einzufügen, ohne eine Achse anzugeben.
Das folgende Beispiel zeigt, wie Sie mit der Funktion numpy.insert()
Elemente in ein Array einfügen können:
import numpy as np
# Erstellen von Array-Objekten (Ganzzahlen)
np_arr1 = np.array([[1, 2], [4, 5]])
np_arr2 = np.array([[10, 20], [30, 40]])
np_arr3 = np.array([100, 200, 300])
# Ausgabe der Arrays
print("np_arr1 ist:\n", np_arr1)
print("np_arr2 ist:\n", np_arr2)
print("np_arr3 ist:\n", np_arr3)
# Einfügen eines 1D-Arrays in ein 2D-Array und Ausgabe des Ergebnisses
# Das ursprüngliche Array wird vor dem Einfügen abgeflacht
insert_axis_none = np.insert(np_arr1, 1, np_arr3, axis=None)
print("insert_axis_none ist:\n", insert_axis_none)
# Einfügen eines Arrays in ein anderes Array zeilenweise
# und Ausgabe des Ergebnisses
insert_axis_0 = np.insert(np_arr1, 1, np_arr2, axis=0)
print("insert_axis_0 ist:\n", insert_axis_0)
# Einfügen eines Arrays in ein anderes Array spaltenweise
# und Ausgabe des Ergebnisses
insert_axis_1 = np.insert(np_arr1, 1, np_arr2, axis=1)
print("insert_axis_1 ist:\n", insert_axis_1)
Die Ausgabe ist:
np_arr1 ist:
[[1 2]
[4 5]]
np_arr2 ist:
[[10 20]
[30 40]]
np_arr3 ist:
[100 200 300]
insert_axis_none ist:
[ 1 100 200 300 2 4 5]
insert_axis_0 ist:
[[ 1 2]
[10 20]
[30 40]
[ 4 5]]
insert_axis_1 ist:
[[ 1 10 30 2]
[ 4 20 40 5]]
Im vorangegangenen Beispiel, wenn Sie ein 2D-Array in ein anderes 2D-Array entlang der Achse 1 einfügen, wird jedes Array innerhalb von np_arr2
als separate Spalte in np_arr1
eingefügt. Wenn Sie das gesamte 2D-Array in ein anderes 2D-Array einfügen möchten, fügen Sie eckige Klammern um den obj
-Parameterindexwert hinzu, um anzugeben, dass das gesamte Array vor dieser Position eingefügt werden soll. Ohne die eckigen Klammern stapelt numpy.insert()
die Arrays in Sequenz als Spalten vor dem angegebenen Index.
import numpy as np
# create 2D array objects (integers)
np_arr1 = np.array([[1, 2], [3, 4]])
np_arr2 = np.array([[10, 20], [30, 40]])
# print the arrays
print("np_arr1 is:\n", np_arr1)
print("np_arr2 is:\n", np_arr2)
# insert an array, column by column, into another array
# and print the result
insert_axis_1 = np.insert(np_arr1, 1, np_arr2, axis=1)
print("insert_axis_1 is:\n", insert_axis_1)
# insert a whole array into another array by column
# and print the result
insert_index_axis_1 = np.insert(np_arr1, [1], np_arr2, axis=1)
print("insert_index_axis_1 is:\n", insert_index_axis_1)
Die Ausgabe ist:
Ausgabe
np_arr1 ist:
[[1 2]
[3 4]]
np_arr2 ist:
[[10 20]
[30 40]]
insert_axis_1 ist:
[[ 1 10 30 2]
[ 3 20 40 4]]
insert_index_axis_1 ist:
[[ 1 10 20 2]
[ 3 30 40 4]]
Das vorangegangene Beispiel zeigt, wie numpy.insert()
Spalten in ein Array einfügt, abhängig von der Index-Notation.
Fazit
In diesem Artikel haben Sie mithilfe der Module array
und NumPy
Elemente zu Arrays hinzugefügt. Nutzen Sie die besprochenen Methoden, um Arrays effektiv in Python zu verwalten.