12,571 views
この記事は最終更新から 2305日 が経過しています。
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]])
注意してプログラムを書かないと、データが次々と破壊されて困ることになりそう…
アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済2026-02-10: 0回 2026-02-09: 0回 2026-02-08: 0回 2026-02-07: 2回 2026-02-06: 0回 2026-02-05: 0回 2026-02-04: 0回