NumPy matriz Copiar vs Ver


A diferença entre copiar e visualizar

A principal diferença entre uma cópia e uma visão de um array é que a cópia é um novo array, e a visão é apenas uma visão do array original.

A cópia possui os dados e quaisquer alterações feitas na cópia não afetarão a matriz original, e quaisquer alterações feitas na matriz original não afetarão a cópia.

A exibição não possui os dados e quaisquer alterações feitas na exibição afetarão a matriz original, e quaisquer alterações feitas na matriz original afetarão a exibição.


CÓPIA DE:

Exemplo

Faça uma cópia, altere o array original e exiba os dois arrays:

import numpy as np

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

print(arr)
print(x)

A cópia NÃO DEVE ser afetada pelas alterações feitas na matriz original.


VISUALIZAR:

Exemplo

Faça uma visualização, altere o array original e exiba os dois arrays:

import numpy as np

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

print(arr)
print(x)

A visão deve ser afetada pelas alterações feitas na matriz original.

Faça alterações na VIEW:

Exemplo

Faça uma visualização, altere a visualização e exiba os dois arrays:

import numpy as np

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

print(arr)
print(x)

A matriz original DEVE ser afetada pelas alterações feitas na exibição.



Verifique se o array possui seus dados

Como mencionado acima, as cópias são proprietárias dos dados e as visualizações não possuem os dados, mas como podemos verificar isso?

Todo array NumPy tem o atributo baseque retorna Nonese o array possui os dados.

Caso contrário, o base  atributo se refere ao objeto original.

Exemplo

Imprima o valor do atributo base para verificar se um array possui seus dados ou não:

import numpy as np

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

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

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

A cópia retorna None.
A exibição retorna a matriz original.


Teste-se com exercícios

Exercício:

Use o método correto para fazer uma cópia da matriz.

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

x = arr.