NumPy Array Copy vs View


Die verskil tussen kopie en aansig

Die belangrikste verskil tussen 'n kopie en 'n aansig van 'n skikking is dat die kopie 'n nuwe skikking is, en die aansig is net 'n aansig van die oorspronklike skikking.

Die kopie besit die data en enige veranderinge wat aan die kopie gemaak word, sal nie die oorspronklike skikking beïnvloed nie, en enige veranderinge wat aan die oorspronklike skikking gemaak word, sal nie die kopie beïnvloed nie.

Die aansig besit nie die data nie en enige veranderinge wat aan die aansig gemaak word, sal die oorspronklike skikking beïnvloed, en enige veranderinge wat aan die oorspronklike skikking gemaak word, sal die aansig beïnvloed.


KOPIE:

Voorbeeld

Maak 'n kopie, verander die oorspronklike skikking en vertoon beide skikkings:

import numpy as np

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

print(arr)
print(x)

Die kopie MOET NIE geraak word deur die veranderinge wat aan die oorspronklike skikking gemaak is nie.


BESKOU:

Voorbeeld

Maak 'n aansig, verander die oorspronklike skikking en vertoon beide skikkings:

import numpy as np

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

print(arr)
print(x)

Die aansig MOET geraak word deur die veranderinge wat aan die oorspronklike skikking gemaak is.

Maak veranderinge in die VIEW:

Voorbeeld

Maak 'n aansig, verander die aansig en vertoon beide skikkings:

import numpy as np

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

print(arr)
print(x)

Die oorspronklike skikking MOET geraak word deur die veranderinge wat aan die aansig gemaak is.



Kyk of Array die data besit

Soos hierbo genoem, besit kopieë die data, en sienings besit nie die data nie, maar hoe kan ons dit kontroleer?

Elke NumPy-skikking het die kenmerk basewat terugkeer Noneas die skikking die data besit.

Andersins base  verwys die kenmerk na die oorspronklike voorwerp.

Voorbeeld

Druk die waarde van die basiskenmerk om te kyk of 'n skikking sy data besit of nie:

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 keer terug None.
Die aansig gee die oorspronklike skikking terug.


Toets jouself met oefeninge

Oefening:

Gebruik die korrekte metode om 'n kopie van die skikking te maak.

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

x = arr.