NumPy Array Copy vs View


La différence entre copier et afficher

La principale différence entre une copie et une vue d'un tableau est que la copie est un nouveau tableau et que la vue n'est qu'une vue du tableau d'origine.

La copie est propriétaire des données et toute modification apportée à la copie n'affectera pas le tableau d'origine, et toute modification apportée au tableau d'origine n'affectera pas la copie.

La vue n'est pas propriétaire des données et toute modification apportée à la vue affectera le tableau d'origine, et toute modification apportée au tableau d'origine affectera la vue.


COPIE:

Exemple

Faites une copie, modifiez le tableau d'origine et affichez les deux tableaux :

import numpy as np

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

print(arr)
print(x)

La copie NE DEVRAIT PAS être affectée par les modifications apportées au tableau d'origine.


VOIR:

Exemple

Créez une vue, modifiez le tableau d'origine et affichez les deux tableaux :

import numpy as np

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

print(arr)
print(x)

La vue DEVRAIT être affectée par les modifications apportées au tableau d'origine.

Apportez des modifications dans la VUE :

Exemple

Créez une vue, modifiez la vue et affichez les deux tableaux :

import numpy as np

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

print(arr)
print(x)

Le tableau d'origine DEVRAIT être affecté par les modifications apportées à la vue.



Vérifier si la baie possède ses données

Comme mentionné ci-dessus, les copies possèdent les données et les vues ne possèdent pas les données, mais comment pouvons-nous vérifier cela ?

Chaque tableau NumPy a l'attribut basequi renvoie Nonesi le tableau possède les données.

Sinon, l' base  attribut fait référence à l'objet d'origine.

Exemple

Affichez la valeur de l'attribut de base pour vérifier si un tableau possède ses données ou non :

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 copie revient None.
La vue renvoie le tableau d'origine.


Testez-vous avec des exercices

Exercer:

Utilisez la méthode correcte pour faire une copie du tableau.

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

x = arr.