Sponsored Link

(69) numpy配列の浅いコピー深いコピー

(69) numpy配列の浅いコピー深いコピー

普通に代入した場合、参照が返される。
→ 一方のオブジェクトへの変更が、両方に反映される。

>>> import numpy as np
>>> a = np.random.randint(1,10,(3,4))
>>> a
array([[8, 1, 4, 5],
       [4, 9, 9, 9],
       [8, 3, 5, 5]])
>>>
>>> b = a
>>> b[2,2] = -1
>>> b
array([[ 8,  1,  4,  5],
       [ 4,  9,  9,  9],
       [ 8,  3, -1,  5]])
>>> a
array([[ 8,  1,  4,  5],
       [ 4,  9,  9,  9],
       [ 8,  3, -1,  5]])

numpy.copy を使用した場合、別オブジェクトが生成される。
→ 一方のオブジェクトの変更が、他方に反映されない。

>>> a = np.random.randint(1,10,(3,4))
>>> a
array([[8, 4, 7, 7],
       [2, 6, 3, 7],
       [9, 8, 2, 5]])
>>>
>>> c = a.copy()
>>> c
array([[8, 4, 7, 7],
       [2, 6, 3, 7],
       [9, 8, 2, 5]])
>>> c[2,2] = -1
>>> c
array([[ 8,  4,  7,  7],
       [ 2,  6,  3,  7],
       [ 9,  8, -1,  5]])
>>> a
array([[8, 4, 7, 7],
       [2, 6, 3, 7],
       [9, 8, 2, 5]])

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*