NumPyでの配列の値の更新は、値を代入することで更新することができます。但し、注意点として、ある配列を=で別の配列に代入しても、メモリー領域は共有されており、代入された配列の値を変更すると、元の配列の値も変わってしまいます。これを避ける為には、明示的にcopyでコピーする必要があります。これらの例を具体的に見ていきましょう。
発売数7,200本突破記念で、6月3日まで期間限定で92%オフの大セール中!!!
代入による配列の値の更新
まずは0~9までの値を格納したndarray型の配列を作成し、Xに格納します。
...:
X
Xの6番目の要素を5から55に更新します。
...:
X
Xの0から5番目までの要素0~4を取り出し、Yに代入します。
...:
Y
Yの全ての要素を11に更新します。
...:
Y
再度Xの値を表示すると、Xの0から5番目までの要素も値が変わってしまっていることがわかります。これはXの値をYに=で代入したのですが、XとYの値が格納されているメモリー領域は共有されており、Yの値を変更しただけで、Xの値も変わってしまったのです。
copyによる配列の値の更新
代入による更新の問題を避ける為には、Xの値をYに=で代入するのではなく、copyを使います。先ほどと同様、まずは0~9までの値を格納したndarray型の配列を作成し、Xに格納します。
...:
X
次に、今度はcopyを用いてXの要素をYにコピーします。
...:
Y
Yの全ての要素を11に更新します。
...:
Y
再度Xの値を表示すると、今度はXの値は変わっておらず、0~9までの値が表示されました。
著書の紹介です。