【毎日Python】Pythonで配列のインデックスを指定して値を置換する方法|numpy.put

Pythonでインデックスを指定して配列の値を置き換える方法です。
使用するのはPythonのnumpyライブラリのput関数です。

import numpy as np

このような配列を用意します。

a = np.array([1, 5, 12, 0, 5, 1]) 

まず、put関数の第一引数に配列を指定します。
続けて、第二引数に変更する値のインデックス、第三引数に置き換え後の値を指定します。
実行します。
5を500に変更することができました。

np.put(a, 5, 500)

実行結果:

array([  1, 500,  12,   0,   5,   1])

複数の値を同時に変更することもできます。
変更する値のインデックスと、置き換え後の値をそれぞれリストで指定します。
実行します。
複数の値を同時に置き換えることができました。

np.put(a, [0, 1, 2], [10,20,30])
a

実行結果:

array([10, 20, 30,  0,  5,  1])

なお、配列のインデックス数を超えるインデックスを指定した場合は、エラーになります。
このエラーへの対処方法は主に2つあります。
1つ目は、引数modeにwrapを渡す方法です。
wrapを渡すと、指定したインデックスにたどり着くまでループします。
今回の場合は、インデックスが5まである配列に6を指定したため、一番最初の値が変更されます。
2つ目は、引数modeにclipを渡す方法です。
clipを渡すと、配列の末尾の要素の値が変更されます。

関連メソッド

【毎日Python】Pythonでデータフレームの要素を置換する方法|replace

【毎日Python】Pythonで文字列を置換する方法|str.replace

【毎日Python】Pythonで配列の値を条件を指定して置換する方法|numpy.putmask