NumPy- array kopiëren versus bekijken
Het verschil tussen kopiëren en bekijken
Het belangrijkste verschil tussen een kopie en een weergave van een array is dat de kopie een nieuwe array is en dat de weergave slechts een weergave is van de originele array.
De kopie is eigenaar van de gegevens en eventuele wijzigingen die in de kopie worden aangebracht, hebben geen invloed op de originele array, en alle wijzigingen die in de originele array worden aangebracht, hebben geen invloed op de kopie.
De weergave is niet de eigenaar van de gegevens en alle wijzigingen die in de weergave worden aangebracht, hebben invloed op de oorspronkelijke array, en alle wijzigingen die in de oorspronkelijke array worden aangebracht, hebben invloed op de weergave.
KOPIËREN:
Voorbeeld
Maak een kopie, wijzig de originele array en toon beide arrays:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42
print(arr)
print(x)
De kopie MAG NIET worden beïnvloed door de wijzigingen die in de oorspronkelijke array zijn aangebracht.
VISIE:
Voorbeeld
Maak een weergave, wijzig de originele array en toon beide arrays:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42
print(arr)
print(x)
De weergave MOET worden beïnvloed door de wijzigingen die in de oorspronkelijke array zijn aangebracht.
Wijzigingen aanbrengen in de VIEW:
Voorbeeld
Maak een weergave, wijzig de weergave en toon beide arrays:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31
print(arr)
print(x)
De oorspronkelijke array MOET worden beïnvloed door de wijzigingen die in de weergave zijn aangebracht.
Controleer of Array eigenaar is van zijn gegevens
Zoals hierboven vermeld, is de kopie eigenaar van de gegevens en is de weergave niet de eigenaar van de gegevens, maar hoe kunnen we dit controleren?
Elke NumPy-array heeft het attribuut base
dat terugkeert None
als de array eigenaar is van de gegevens.
Anders base
verwijst het attribuut naar het oorspronkelijke object.
Voorbeeld
Druk de waarde van het basiskenmerk af om te controleren of een array eigenaar is van zijn gegevens of niet:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base)
print(y.base)
Het exemplaar keert terug None
.
De weergave retourneert de oorspronkelijke array.