NumPy 深拷贝

Muhammad Maisam Abbas 2023年1月30日
  1. NumPy 深度复制与 Python 中的 copy.deepcopy() 函数
  2. 使用 Python 中用户定义方法的 NumPy 深度复制
NumPy 深拷贝

本教程将介绍在 Python 中深度复制 NumPy 数组的方法。

NumPy 深度复制与 Python 中的 copy.deepcopy() 函数

Python 有两种类型的副本,浅拷贝和深拷贝。浅拷贝意味着复制的数组只包含对原始数组的引用。这意味着原始数组中的任何更改都将反映在复制的数组中。另一方面,深度复制意味着将原始数组的每个元素复制到复制的数组中。在这种类型的复制中,为复制数组内的每个元素分配一个新的内存位置。这意味着原始数组中的任何更改都不会更改复制数组中的任何内容。

copy 模块中的 deepcopy() 函数 用于深度复制列表,但它也适用于 Python 中的数组。copy.deepcopy() 函数将数组作为输入参数并返回数组的深层副本。下面的代码示例向我们展示了如何在 Python 中使用 copy.deepcopy() 函数对 NumPy 数组进行深度复制。

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]

在上面的代码中,我们使用 copy.deepcopy() 函数在 array2 中深度复制了 NumPy 数组 array。然后我们修改了 array 中的元素。输出显示更改 NumPy 数组 array 内的值对 NumPy 数组 array2 没有影响。

使用 Python 中用户定义方法的 NumPy 深度复制

另一种深度复制 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]

在上面的代码中,我们通过遍历 array 中的每个元素,在 NumPy 数组 array2 中深度复制了 NumPy 数组 array。然后我们修改了 array 中的元素。输出显示更改 NumPy 数组 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