Array de copia vs vista de NumPy

La diferencia entre la copia y la vista

La principal diferencia entre la copia y la vista de array es que la copia es un nuevo array, mientras que esta vista es solo una vista del array original.

La copia tiene datos, cualquier cambio realizado en la copia no afectará al array original, y cualquier cambio realizado en el array original no afectará a la copia.

La vista no tiene datos, cualquier cambio realizado en la vista afectará al array original, mientras que cualquier cambio realizado en el array original afectará a la vista.

Copia:

Ejemplo

Realizar una copia, cambiar el array original y luego mostrar dos arrays:

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

Ejecutar ejemplo

La copia no debe ser afectada por los cambios realizados en el array original.

Vista:

Ejemplo

Crear una vista, cambiar el array original y luego mostrar dos arrays:

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

Ejecutar ejemplo

La vista debe ser afectada por los cambios realizados en el array original.

Cambios en la vista:

Ejemplo

Crear una vista, cambiar la vista y mostrar dos arrays:

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

Ejecutar ejemplo

El array original debe ser afectado por los cambios realizados en la vista.

Verificar si el array tiene datos

Como se mencionó anteriormente, la copia tiene datos mientras que la vista no tiene datos, pero ¿cómo podemos verificarlo?

Cada array NumPy tiene una propiedad baseSi el array tiene datos, esta propiedad base devuelve Ninguno.

De lo contrario,base La propiedad referenciará el objeto original.

Ejemplo

Imprimir el valor de la propiedad base para verificar si el array tiene sus propios datos:

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

Ejecutar ejemplo

Copia de vuelta Ninguno.

Vista regresar al array original.