NumPy Array Copy vs View


Rozdíl mezi kopírováním a zobrazením

Hlavní rozdíl mezi kopií a pohledem na pole je ten, že kopie je nové pole a pohled je pouze pohled na původní pole.

Kopie vlastní data a jakékoli změny provedené v kopii neovlivní původní pole a jakékoli změny provedené v původním poli neovlivní kopii.

Pohled nevlastní data a jakékoli změny provedené v pohledu ovlivní původní pole a jakékoli změny provedené v původním poli ovlivní pohled.


KOPÍROVAT:

Příklad

Vytvořte kopii, změňte původní pole a zobrazte obě pole:

import numpy as np

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

print(arr)
print(x)

Kopie BY NEMĚLA být ovlivněna změnami provedenými v původním poli.


POHLED:

Příklad

Proveďte zobrazení, změňte původní pole a zobrazte obě pole:

import numpy as np

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

print(arr)
print(x)

Pohled BY MĚL být ovlivněn změnami provedenými v původním poli.

Proveďte změny v ZOBRAZENÍ:

Příklad

Vytvořte zobrazení, změňte zobrazení a zobrazte obě pole:

import numpy as np

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

print(arr)
print(x)

Původní pole BY MĚLO být ovlivněno změnami provedenými v pohledu.



Zkontrolujte, zda Array vlastní data

Jak bylo uvedeno výše, kopie vlastní data a pohledy data nevlastní , ale jak to můžeme zkontrolovat?

Každé pole NumPy má atribut base, který se vrátí, Nonepokud pole vlastní data.

Jinak base  atribut odkazuje na původní objekt.

Příklad

Vytiskněte hodnotu základního atributu a zkontrolujte, zda pole vlastní svá data, či nikoli:

import numpy as np

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

x = arr.copy()
y = arr.view()

print(x.base)
print(y.base)

Kopie se vrátí None.
Pohled vrátí původní pole.


Otestujte se pomocí cvičení

Cvičení:

Použijte správnou metodu k vytvoření kopie pole.

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

x = arr.