Numpyの配列で要素値がある条件に対し真のときの処理と偽であった場合に違う処理をするようなことがnumpy.where関数を使う事で可能です.本記事でではこの使い方について説明しております.
スポンサーリンク
numpy.where関数について
numpy.where関数を使うとNumpy配列のndarryの各要素値に対して,条件を満たす要素に特定の処理をすることができます.例えば実験等の計測データで上限値を設定し超えたら,この値にするなどの設定ができます.
numpy.whereで条件が1つの場合
・計測データを想定して,配列内のデータ値が負のときは0として,それ以外は要素値に係数10を掛けるプログラムを作成します.
[IN]
import numpy as np
a =np.array([-3,-2,-1,0,1,2,3])
print(np.where(a < 0, 0, a*10 ))
[OUT]
[ 0 0 0 0 10 20 30]
引数yをa*10とすることで条件が偽の場合に元の配列aを10倍にすることができました.
numpy.whereで複数の条件がある場合
numpy.where関数で複数の条件を設定するにはブール演算子を使い,各条件をカッコ()で囲むことで可能です.
ブール演算子 | 名所 | 使用 | 例題意味 |
& | AND 論理積 | A & B | 条件AとBの両方が真のとき真 |
| | OR 論理和 | A | B | 条件AとBの片方でも真なら真 |
^ | XOR 排他的論理和 | A ^ B | 条件AとBの片方だけ真なら真 |
~ | NOT 否定 | ~ A | 条件Aの真偽が反転する. |
・配列内の要素値が-2以下または2以上の場合は配列内の値はそのままで,違う場合は0にするプログラムを作成します.
[IN]
import numpy as np
a =np.array([-3,-2,-1,0,1,2,3])
print(np.where( (a<=-2) | (a >=2) , a, 0 ))
[OUT]
[-3 -2 0 0 0 2 3]
論理和 | を使うことで条件(a<=-2)と(a >=2)のどちらかを満たしていれば真となり、元の配列aの要素値となり,それ以外は0となりました.
スポンサーリンク
コメント