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 base
qui renvoie None
si 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.