NumPy ディープコピー

Muhammad Maisam Abbas 2023年1月30日
  1. Python の copy.deepcopy() 関数を使用した NumPy ディープコピー
  2. Python でのユーザー定義アプローチによる NumPy ディープコピー
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 に影響がないことを示しています。

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