NumPy Array Copiar vs Ver


La diferencia entre copiar y ver

La principal diferencia entre una copia y una vista de una matriz es que la copia es una nueva matriz y la vista es solo una vista de la matriz original.

La copia posee los datos y cualquier cambio realizado en la copia no afectará la matriz original, y cualquier cambio realizado en la matriz original no afectará a la copia.

La vista no posee los datos y cualquier cambio realizado en la vista afectará a la matriz original, y cualquier cambio realizado en la matriz original afectará a la vista.


COPIAR:

Ejemplo

Haga una copia, cambie la matriz original y muestre ambas matrices:

import numpy as np

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

print(arr)
print(x)

La copia NO DEBE verse afectada por los cambios realizados en la matriz original.


VISTA:

Ejemplo

Cree una vista, cambie la matriz original y muestre ambas matrices:

import numpy as np

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

print(arr)
print(x)

La vista DEBERÍA verse afectada por los cambios realizados en la matriz original.

Hacer cambios en la VISTA:

Ejemplo

Cree una vista, cambie la vista y muestre ambas matrices:

import numpy as np

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

print(arr)
print(x)

La matriz original DEBERÍA verse afectada por los cambios realizados en la vista.



Comprobar si la matriz es propietaria de sus datos

Como se mencionó anteriormente, las copias son propietarias de los datos y las vistas no son propietarias de los datos, pero ¿cómo podemos verificar esto?

Cada matriz NumPy tiene el atributo baseque devuelve Nonesi la matriz posee los datos.

De lo contrario, el base  atributo se refiere al objeto original.

Ejemplo

Imprima el valor del atributo base para verificar si una matriz posee sus datos o no:

import numpy as np

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

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

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

Vuelve la copia None.
La vista devuelve la matriz original.


Ponte a prueba con ejercicios

Ejercicio:

Use el método correcto para hacer una copia de la matriz.

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

x = arr.