Kopia tablicy NumPy vs. widok

Różnica między kopią a widokiem

Główna różnica między kopią a widokiem tablicy polega na tym, że kopia to nowa tablica, podczas gdy widok to tylko widok oryginalnej tablicy.

Kopia zawiera dane, jakiekolwiek zmiany dokonywane na kopii nie wpłyną na oryginalny ciąg, a zmiany dokonywane na oryginalnym ciągu nie wpłyną na kopię.

Widok nie ma danych, każda zmiana w widoku wpływa na oryginalną tablicę, a każda zmiana w oryginalnej tablicy wpływa na widok.

Kopia:

Przykład

Wykonaj kopiowanie, zmień oryginalną tablicę i wyświetl dwie tablice:

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

Uruchom przykład

Kopia nie powinna być wpływana przez zmiany w oryginalnej tablicy.

Widok:

Przykład

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

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

Uruchom przykład

Widok powinien być wpływany przez zmiany w oryginalnej tablicy.

Zmiany w widoku:

Przykład

Utwórz widok, zmień widok i wyświetl dwie tablice:

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

Uruchom przykład

Oryginalna tablica powinna być wpływana przez zmiany w widoku.

Sprawdź, czy tablica ma dane

Jak wspomniano wcześniej, kopia ma dane, a widok nie ma danych, ale jak możemy to sprawdzić?

Każda tablica NumPy ma atrybut base, jeśli tablica ma dane, atrybut base zwraca: Brak wartości.

W przeciwnym razie:base Atrybuty będą odnosić się do oryginalnego obiektu.

Przykład

Wydrukuj wartość atrybutu base, aby sprawdzić, czy tablica ma swoje własne dane:

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

Uruchom przykład

Kopia zwrócona Brak wartości.

Zwróć do oryginalnego tablicy.