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, None
wenn 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.