NumPy array kopi vs. visning

Forskellen mellem kopi og visning

Det vigtigste forskel mellem kopi og arrayview er, at kopi er et nyt array, mens denne visning kun er en visning af det oprindelige array.

Kopi har data, ændringer foretaget på kopi vil ikke påvirke det oprindelige array, og ændringer foretaget på det oprindelige array vil ikke påvirke kopi.

View har ikke data, enhver ændring, der foretages på view, påvirker det oprindelige array, og enhver ændring, der foretages på det oprindelige array, påvirker viewen.

Kopi:

Eksempel

Gør en kopi, ændr det oprindelige array og vis to arrayer:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 61
print(arr) 
print(x)

Kør eksempel

Kopian bør ikke påvirkes af ændringer, der foretages på det oprindelige array.

View:

Eksempel

Opret en view, ændr det oprindelige array og vis to arrayer:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 61
print(arr) 
print(x)

Kør eksempel

Viewen bør påvirkes af ændringer, der foretages på det oprindelige array.

Ændr i viewen:

Eksempel

Opret en view, ændr view og vis to arrayer:

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

Kør eksempel

Det oprindelige array bør påvirkes af ændringer, der foretages på view.

Kontroller om arrayet har data

Som nævnt tidligere har kopian data, mens view ikke har data, men hvordan kontrollerer vi det?

Hvert NumPy-array har en egenskab basehvis arrayet har data, returnerer denne base-attribut Ingen.

Ellerbase Egenskaberne vil referere til det oprindelige objekt.

Eksempel

Print værdien af base-attributten for at kontrollere om arrayet har egne data:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base)
print(y.base)

Kør eksempel

Kopi returnerer Ingen.

Vis returneret array