NumPy Deep Copy

  1. NumPy Deep Copy с функцией copy.deepcopy() в Python
  2. NumPy Deep Copy с пользовательским подходом в Python

В этом руководстве будут представлены методы глубокого копирования массива NumPy в Python.

NumPy Deep Copy с функцией copy.deepcopy() в Python

У Python есть два типа копий: мелкая копия и глубокая копия. Неглубокая копия означает, что скопированный массив содержит только ссылку на исходный массив. Это означает, что любое изменение исходного массива будет отражено внутри скопированного массива. С другой стороны, глубокая копия означает копирование каждого элемента исходного массива в скопированный массив. В этом типе копирования каждому элементу внутри скопированного массива выделяется новая ячейка памяти. Это означает, что любое изменение в исходном массиве ничего не изменит внутри скопированного массива.

Функция deepcopy() внутри модуля copy используется для глубокого копирования списков, но она также отлично работает с массивами в Python. Функция copy.deepcopy() принимает массив в качестве входного аргумента и возвращает глубокую копию массива. В следующем примере кода показано, как глубоко скопировать массив NumPy с помощью функции copy.deepcopy() в 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)

Выход:

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

В приведенном выше коде мы глубоко скопировали массив NumPy array внутри array2 с помощью функции copy.deepcopy(). Затем мы изменили элементы внутри array. Выходные данные показывают, что изменение значений внутри массива NumPy array не влияет на массив NumPy array2.

NumPy Deep Copy с пользовательским подходом в Python

Другой метод глубокого копирования массива NumPy - перебрать весь массив и скопировать каждый элемент внутри него. См. Следующий пример кода.

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)

Выход:

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

В приведенном выше коде мы глубоко скопировали массив NumPy array внутри массива NumPy array2, перебирая каждый элемент внутри array. Затем мы изменили элементы внутри array. Выходные данные показывают, что изменение значений внутри массива NumPy array не влияет на массив NumPy array2.