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

putmask
毎日Python/こつこつPython

Pythonで条件を指定して値を置き換える方法です。
使用するのは、Pythonのnumpyライブラリのputmask関数です。

import numpy as np

まず、このような配列で試してみましょう。

a_1 = np.array([1, 5, 2, 6, 8, 3, 4])

putmask関数の第一引数に配列を指定します。
続けて、第二引数に条件を指定します。
今回は、配列の値が5以上の場合とします。
続けて、第三引数に変更後の値を指定します。
実行します。
5以上の値を100に変更することができました。

np.putmask(a_1, a_1 >= 5, 100)
a_1

実行結果:

array([  1, 100,   2, 100, 100,   3,   4])

次に、2次元配列で試してみましょう。

a_2 = np.array([[1, 7, 5], 
                [4, 3, 8], 
                [12, 2, 1]])

先ほど同じ条件を指定して実行します。
2次配列においても、問題なく値を変更することができました。

np.putmask(a_2, a_2 >= 5, 100)
a_2

実行結果:

array([[  1, 100, 100],
       [  4,   3, 100],
       [100,   2,   1]])

また、変更後の値を複数指定することもできます。
第三引数に変更後の値をリストで指定します。
実行します。
条件に一致する値を、10と100に順番ずつ変更することができました。

np.putmask(a_2, a_2 >= 5, [10,100])
a_2

実行結果:


array([[  1, 100,  10],
       [  4,   3, 100],
       [ 10,   2,   1]])

関連メソッド

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

【毎日Python】Pythonで配列の値が条件に一致するかを判定する方法|numpy.all