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í, None
pokud 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.