NumPy ディープコピー
このチュートリアルでは、Python で NumPy 配列をディープコピーする方法を紹介します。
Python の copy.deepcopy()
関数を使用した NumPy ディープコピー
Python には、浅いコピーと深いコピーの 2 種類のコピーがあります。浅いコピーとは、コピーされた配列に元の配列への参照のみが含まれていることを意味します。これは、元の配列の変更がコピーされた配列内に反映されることを意味します。一方、ディープコピーとは、元の配列の各要素をコピーされた配列にコピーすることを意味します。このタイプのコピーでは、コピーされた配列内の各要素に新しいメモリ位置が割り当てられます。これは、元の配列を変更しても、コピーされた配列内の内容は変更されないことを意味します。
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
に影響がないことを示しています。
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