NumPy Array Copy vs View


La differenza tra copia e visualizzazione

La differenza principale tra una copia e una visualizzazione di un array è che la copia è un nuovo array e la visualizzazione è solo una visualizzazione dell'array originale.

La copia possiede i dati e qualsiasi modifica apportata alla copia non influirà sull'array originale e qualsiasi modifica apportata all'array originale non influirà sulla copia.

La vista non possiede i dati e tutte le modifiche apportate alla vista influiranno sulla matrice originale e tutte le modifiche apportate alla matrice originale influiranno sulla vista.


COPIA:

Esempio

Crea una copia, cambia l'array originale e visualizza entrambi gli array:

import numpy as np

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

print(arr)
print(x)

La copia NON DEVE essere influenzata dalle modifiche apportate all'array originale.


VISUALIZZA:

Esempio

Crea una vista, cambia l'array originale e visualizza entrambi gli array:

import numpy as np

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

print(arr)
print(x)

La vista DOVREBBE essere influenzata dalle modifiche apportate alla matrice originale.

Apporta modifiche nella VIEW:

Esempio

Crea una vista, cambia la vista e mostra entrambi gli array:

import numpy as np

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

print(arr)
print(x)

L'array originale DOVREBBE essere influenzato dalle modifiche apportate alla vista.



Controlla se l'array possiede i suoi dati

Come accennato in precedenza, le copie possiedono i dati e le visualizzazioni non possiedono i dati, ma come possiamo verificarlo?

Ogni array NumPy ha l'attributo baseche restituisce Nonese l'array possiede i dati.

In caso contrario, l' base  attributo si riferisce all'oggetto originale.

Esempio

Stampa il valore dell'attributo di base per verificare se un array possiede i suoi dati o meno:

import numpy as np

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

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

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

La copia ritorna None.
La vista restituisce l'array originale.


Mettiti alla prova con gli esercizi

Esercizio:

Utilizzare il metodo corretto per creare una copia dell'array.

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

x = arr.