Kopieren ein 2D-Array in Python
-
Erstellen eine Kopie von 2D-Arrays mit der NumPy-Funktion
copy()
-
Erstellen eine Kopie eines 2D-Arrays mit der Funktion
copy.deepcopy()
- Erstellen eine flache Kopie eines 2D-Arrays in Python
Ein zweidimensionales Array ist ein Array von Arrays, die Daten in Zeilen und Spalten darstellen.
Auf Elemente in zweidimensionalen Arrays kann mit zwei Indizes zugegriffen werden. Der erste Index bezieht sich auf die Subarrays innerhalb des Arrays und der zweite Index auf die einzelnen Elemente.
Zweidimensionale Arrays folgen der folgenden Syntax.
array_name = [[d1, d2, d3, d4, ..., dn], [c1, c2, c3, c4, ...., cn]]
Das erste Subarray stellt die Zeile dar, während das zweite Subarray die Spalte der Tabelle darstellt.
Das Kopieren von Objekten ist ein wichtiger Aspekt beim Arbeiten und Ändern von Arrays.
Dies ermöglicht es uns, Objekte wie Arrays frei zu iterieren und zu ändern, ohne auf Fehler zu stoßen. Das Erstellen von Kopien ermöglicht es uns auch, die ursprünglichen Objekte beizubehalten und stattdessen Operationen an den Kopien durchzuführen.
Python bietet eine Reihe von Factory-Funktionen, die verwendet werden können, um eine Kopie eines Arrays oder eines anderen veränderlichen Objekts in Python zu erstellen. Zu diesen änderbaren Objekten gehören Wörterbücher, Sätze und Listen.
Erstellen eine Kopie von 2D-Arrays mit der NumPy-Funktion copy()
NumPy bietet die Funktion copy()
an. Die Funktion copy()
kann wie unten gezeigt implementiert werden.
import numpy as np
x = np.array([[23, 34, 45], [24, 45, 78]])
y = x.copy()
print(y)
# making changes to the copy of array
y[0][2] = 65
print(y)
# printing original 2d array
print(x)
Ausgabe:
[[23 34 45]
[24 45 78]]
[[23 34 65]
[24 45 78]]
[[23 34 45]
[24 45 78]]
Im Beispielcode haben wir eine Kopie des ursprünglichen Arrays erstellt und die Kopie geändert. Wir haben jedoch die Originalkopie des Arrays beibehalten, die in der letzten Zeile gedruckt ist.
Erstellen eine Kopie eines 2D-Arrays mit der Funktion copy.deepcopy()
Mit der Deep-Copy-Funktion können wir ein neues zusammengesetztes Objekt erstellen, indem wir die Objekte des ursprünglichen Objekts rekursiv in das neue Objekt einfügen.
Das bedeutet, dass Änderungen am neuen Objekt, das ein Array ist, keine Auswirkungen auf das ursprüngliche Array haben. Wir werden die im Kopiermodul verfügbare Funktion deepcopy()
verwenden, um diese Methode zu implementieren.
Das Kopiermodul bietet Funktionen zum Kopieren von Elementen aus Python-Objekten wie Listen und Arrays. Mit der Funktion deepcopy()
kann eine Kopie des 2D-Arrays erstellt werden, wie im folgenden Beispiel gezeigt.
import copy
x = [[24, 23, 25], [32, 43, 54]]
y = copy.deepcopy(x)
# a copy of the original array
print(y)
# making changes to the copy of the array
y[0][2] = 100
print(y)
# original array
print(x)
Ausgabe:
[[24, 23, 25], [32, 43, 54]]
[[24, 23, 100], [32, 43, 54]]
[[24, 23, 25], [32, 43, 54]]
Erstellen eine flache Kopie eines 2D-Arrays in Python
In ähnlicher Weise erzeugt das flache Kopierverfahren auch ein zusammengesetztes Objekt, das das ursprüngliche Objekt darstellt. Im Gegensatz zum tiefen Kopieren, bei dem Kopien der Originalobjekte eingefügt werden, verweist das flache Kopieren nur auf Objekte im Originalobjekt.
Daher ist das flache Kopieren nicht rekursiv, sondern erlaubt uns nur, die Referenz eines Objekts in ein anderes Objekt zu kopieren. Das bedeutet, dass Änderungen an einem Objekt keine Auswirkungen auf das andere Objekt haben.
Wie unten gezeigt, kann flaches Kopieren mit der Funktion view()
implementiert werden.
import numpy as np
x = np.array([[24, 23, 25], [32, 43, 54]])
y = x.view()
# a copy of the original array
# making changes to the copy of the array
y[0][2] = 100
print(y)
# original array
print(x)
Ausgabe:
[[ 24 23 100]
[ 32 43 54]]
[[ 24 23 100]
[ 32 43 54]]
In diesem Fall ändert das Ändern des Werts eines Arrays die Werte im ursprünglichen Array. Die beiden Arrays verweisen jedoch immer noch auf unterschiedliche Objekte.
Mit der Funktion id()
können wir überprüfen, ob die beiden Arrays auf unterschiedliche Objekte verweisen. Dies ist eine integrierte Funktion, die die Identität von Objekten zurückgibt und wie unten gezeigt implementiert werden kann.
import numpy as np
x = np.array([[24, 23, 25], [32, 43, 54]])
print(id(x))
y = x.view()
print(id(y))
# a copy of the original array
# making changes to the copy of the array
y[0][2] = 100
print(y)
# original array
print(x)
Ausgabe:
139636169252912
139636169253008
[[ 24 23 100]
[ 32 43 54]]
[[ 24 23 100]
[ 32 43 54]]
Alternativ können wir mit der Funktion copy()
auch eine flache Kopie eines 2D-Arrays erstellen.
Das Kopiermodul stellt die Funktion copy()
zur Verfügung, die verschiedene Funktionen zum Kopieren von Elementen in Listen, Arrays und anderen Objekten bereitstellt. Wie unten gezeigt, kann die Funktion copy
implementiert werden, um eine flache Kopie zu erstellen.
import numpy as np
import copy
x = np.array([[24, 23, 25], [32, 43, 54]])
y = copy.copy(x)
# a copy of the original array
# making changes to the copy of the array
y[0][2] = 100
print(y)
# original array
print(x)
Ausgabe:
[[ 24 23 100]
[ 32 43 54]]
[[24 23 25]
[32 43 54]]
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn