NumPy- Array kopieren vs. anzeigen


Der Unterschied zwischen Kopieren und Anzeigen

Der Hauptunterschied zwischen einer Kopie und einer Ansicht eines Arrays besteht darin, dass die Kopie ein neues Array und die Ansicht nur eine Ansicht des ursprünglichen Arrays ist.

Die Kopie besitzt die Daten und alle Änderungen, die an der Kopie vorgenommen werden, wirken sich nicht auf das ursprüngliche Array aus, und alle Änderungen, die am ursprünglichen Array vorgenommen werden, wirken sich nicht auf die Kopie aus.

Die Ansicht besitzt die Daten nicht, und alle Änderungen, die an der Ansicht vorgenommen werden, wirken sich auf das ursprüngliche Array aus, und alle Änderungen, die am ursprünglichen Array vorgenommen werden, wirken sich auf die Ansicht aus.


KOPIEREN:

Beispiel

Erstellen Sie eine Kopie, ändern Sie das ursprüngliche Array und zeigen Sie beide Arrays an:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42

print(arr)
print(x)

Die Kopie SOLLTE NICHT von den Änderungen betroffen sein, die am ursprünglichen Array vorgenommen wurden.


AUSSICHT:

Beispiel

Erstellen Sie eine Ansicht, ändern Sie das ursprüngliche Array und zeigen Sie beide Arrays an:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42

print(arr)
print(x)

Die Ansicht SOLLTE von den Änderungen betroffen sein, die am ursprünglichen Array vorgenommen wurden.

Nehmen Sie Änderungen in der ANSICHT vor:

Beispiel

Erstellen Sie eine Ansicht, ändern Sie die Ansicht und zeigen Sie beide Arrays an:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31

print(arr)
print(x)

Das ursprüngliche Array SOLLTE von den an der Ansicht vorgenommenen Änderungen betroffen sein.



Überprüfen Sie, ob das Array seine Daten besitzt

Wie oben erwähnt, besitzt Kopien die Daten und Ansichten besitzen die Daten nicht, aber wie können wir dies überprüfen?

Jedes NumPy-Array hat das Attribut base, das zurückgibt, Nonewenn das Array die Daten besitzt.

Andernfalls bezieht sich das base  Attribut auf das ursprüngliche Objekt.

Beispiel

Drucken Sie den Wert des Basisattributs, um zu überprüfen, ob ein Array seine Daten besitzt oder nicht:

import numpy as np

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

x = arr.copy()
y = arr.view()

print(x.base)
print(y.base)

Die Kopie kehrt zurück None.
Die Ansicht gibt das ursprüngliche Array zurück.


Testen Sie sich mit Übungen

Übung:

Verwenden Sie die richtige Methode, um eine Kopie des Arrays zu erstellen.

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

x = arr.