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 base
que retorna None
se 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.