Kopiowanie tablicy NumPy a widok


Różnica między kopiowaniem a widokiem

Główna różnica między kopią a widokiem tablicy polega na tym, że kopia jest nową tablicą, a widok jest tylko widokiem oryginalnej tablicy.

Kopia jest właścicielem danych i wszelkie zmiany wprowadzone w kopii nie wpłyną na oryginalną tablicę, a wszelkie zmiany wprowadzone w oryginalnej tablicy nie wpłyną na kopię.

Widok nie jest właścicielem danych, a wszelkie zmiany wprowadzone w widoku wpłyną na oryginalną tablicę, a wszelkie zmiany dokonane w oryginalnej tablicy wpłyną na widok.


KOPIUJ:

Przykład

Utwórz kopię, zmień oryginalną tablicę i wyświetl obie tablice:

import numpy as np

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

print(arr)
print(x)

Kopia NIE POWINNA mieć wpływu na zmiany dokonane w oryginalnej tablicy.


POGLĄD:

Przykład

Utwórz widok, zmień oryginalną tablicę i wyświetl obie tablice:

import numpy as np

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

print(arr)
print(x)

Na widok POWINNY mieć wpływ zmiany dokonane w oryginalnej tablicy.

Wprowadź zmiany w WIDOKU:

Przykład

Utwórz widok, zmień widok i wyświetl oba szyki:

import numpy as np

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

print(arr)
print(x)

Oryginalna tablica POWINNA mieć wpływ na zmiany wprowadzone w widoku.



Sprawdź, czy tablica jest właścicielem danych

Jak wspomniano powyżej, kopie są właścicielami danych, a widoki nie są właścicielami danych, ale jak możemy to sprawdzić?

Każda tablica NumPy ma atrybut base, który zwraca, Nonejeśli tablica jest właścicielem danych.

W przeciwnym razie base  atrybut odnosi się do oryginalnego obiektu.

Przykład

Wydrukuj wartość podstawowego atrybutu, aby sprawdzić, czy tablica posiada dane, czy 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)

Kopia powraca None.
Widok zwraca oryginalną tablicę.


Sprawdź się za pomocą ćwiczeń

Ćwiczenie:

Użyj właściwej metody, aby wykonać kopię tablicy.

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

x = arr.