Array di copia vs vista di NumPy

La differenza tra la copia e la vista

La principale differenza tra la copia e la vista dell'array è che la copia è un nuovo array, mentre la vista è solo una vista dell'array originale.

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

La vista non possiede dati, qualsiasi modifica apportata alla vista influenzerà l'array originale, mentre qualsiasi modifica apportata all'array originale influenzerà la vista.

Copia:

Esempio

Effettuare una copia, modificare l'array originale e quindi visualizzare due array:

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

Eseguire l'esempio

La copia non dovrebbe essere influenzata dalle modifiche apportate all'array originale.

Vista:

Esempio

Creare una vista, modificare l'array originale e quindi visualizzare due array:

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

Eseguire l'esempio

La vista dovrebbe essere influenzata dalle modifiche apportate all'array originale.

Modifiche nella vista:

Esempio

Creare una vista, modificare la vista e visualizzare due array:

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

Eseguire l'esempio

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

Verificare se l'array ha dati

Come descritto, la copia ha dati mentre la vista non ha dati, ma come possiamo verificare?

Ogni array NumPy ha un attributo basese l'array ha dati, l'attributo base restituisce None.

Altrimenti,base L'attributo riferirà all'oggetto originale.

Esempio

Stampare il valore dell'attributo base per verificare se l'array ha i propri dati:

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

Eseguire l'esempio

Restituzione di una copia None.

Visualizza il vettore originale.