NumPy Deep Copy

Muhammad Maisam Abbas 30 janeiro 2023
  1. NumPy Deep Copy com a função copy.deepcopy() em Python
  2. NumPy Deep Copy com a abordagem definida pelo usuário em Python
NumPy Deep Copy

Este tutorial irá apresentar os métodos para copiar profundamente um array NumPy em Python.

NumPy Deep Copy com a função copy.deepcopy() em Python

Python tem dois tipos de cópias, uma cópia superficial e uma cópia profunda. Uma cópia superficial significa que a matriz copiada contém apenas uma referência à matriz original. Isso significa que qualquer alteração na matriz original será refletida dentro do array copiada. Por outro lado, uma cópia profunda significa copiar cada elemento do array original para o array copiado. Nesse tipo de cópia, um novo local de memória é alocado para cada elemento dentro do array copiado. Isso significa que qualquer mudança no array original não mudará nada dentro do array copiado.

A função deepcopy() dentro do módulo copy é usada para listas de cópias profundas, mas também funciona bem com arrays em Python. A função copy.deepcopy() leva a matriz como um argumento de entrada e retorna uma cópia profunda do array. O exemplo de código a seguir nos mostra como copiar profundamente um array NumPy com a função copy.deepcopy() em Python.

import numpy as np
import copy

array = np.array([1, 2, 3, 4])
array2 = copy.deepcopy(array)
array[0] = array[0] + 1
print(array)
print(array2)

Resultado:

[2 2 3 4]
[1 2 3 4]

No código acima, copiamos profundamente o array NumPy array dentro do array2 com a função copy.deepcopy(). Em seguida, modificamos os elementos dentro do array. A saída mostra que alterar os valores dentro do array NumPy array não tem efeito no array NumPy array2.

NumPy Deep Copy com a abordagem definida pelo usuário em Python

Outro método de copiar profundamente um array NumPy é iterar por todo o array e copiar cada elemento dentro dele. Veja o seguinte exemplo de código.

import numpy as np

array = np.array([1, 2, 3, 4])
array2 = np.array([x for x in array])
array[1] = 1
print(array)
print(array2)

Resultado:

[1 1 3 4]
[1 2 3 4]

No código acima, copiamos profundamente o array NumPy array dentro do array NumPy array2 iterando através de cada elemento dentro do array. Em seguida, modificamos os elementos dentro do array. A saída mostra que alterar os valores dentro do array NumPy array não tem efeito no array NumPy array2.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn