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