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 basedat terugkeert Noneals 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.


Test jezelf met oefeningen

Oefening:

Gebruik de juiste methode om een ​​kopie van de array te maken.

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

x = arr.