A Diferença Entre uma Cópia e uma Visualização (View)
Em NumPy, uma cópia é um array totalmente novo com seus próprios dados, enquanto uma visualização (view) é uma nova maneira de olhar para os mesmos dados. Modificar uma visualização afetará o array original, mas modificar uma cópia não.
Vamos ver isso na prática. Criaremos um array, depois faremos uma visualização e uma cópia dele. Em seguida, modificaremos ambos e observaremos o efeito no array original.
Primeiro, abra o arquivo main.py no explorador de arquivos à esquerda. Em seguida, substitua seu conteúdo pelo seguinte código:
import numpy as np
## --- Parte 1: Modificando uma Visualização ---
print("--- Modificando uma Visualização ---")
## Cria um array original
original_array_view = np.array([1, 2, 3, 4, 5])
print(f"Array original: {original_array_view}")
## Cria uma visualização do array
view_array = original_array_view.view()
## Modifica o primeiro elemento da visualização
view_array[0] = 99
print(f"Visualização após modificação: {view_array}")
print(f"Array original após modificar a visualização: {original_array_view}\n")
## --- Parte 2: Modificando uma Cópia ---
print("--- Modificando uma Cópia ---")
## Cria outro array original
original_array_copy = np.array([10, 20, 30, 40, 50])
print(f"Array original: {original_array_copy}")
## Cria uma cópia do array
copy_array = original_array_copy.copy()
## Modifica o primeiro elemento da cópia
copy_array[0] = 999
print(f"Cópia após modificação: {copy_array}")
print(f"Array original após modificar a cópia: {original_array_copy}")
Agora, salve o arquivo e execute-o no terminal para ver a saída.
python main.py
Você deverá ver a seguinte saída. Observe como o array original mudou quando sua visualização foi modificada, mas permaneceu inalterado quando sua cópia foi modificada.
--- Modificando uma Visualização ---
Array original: [1 2 3 4 5]
Visualização após modificação: [99 2 3 4 5]
Array original após modificar a visualização: [99 2 3 4 5]
--- Modificando uma Cópia ---
Array original: [10 20 30 40 50]
Cópia após modificação: [999 20 30 40 50]
Array original após modificar a cópia: [10 20 30 40 50]
Isso demonstra a diferença principal: uma visualização está ligada aos dados originais, enquanto uma cópia é completamente independente.