Numpyでwhere関数を使い条件に応じた処理をする方法

Numpy

 Numpyの配列で要素値がある条件に対し真のときの処理と偽であった場合に違う処理をするようなことがnumpy.where関数を使う事で可能です.本記事でではこの使い方について説明しております.

 スポンサーリンク

スポンサーリンク

numpy.where関数について

 numpy.where関数を使うとNumpy配列のndarryの各要素値に対して,条件を満たす要素に特定の処理をすることができます.例えば実験等の計測データで上限値を設定し超えたら,この値にするなどの設定ができます.

numpy.where関数の書式

numpy.where(condition[,x,y])

引数概要
condition条件,bool値を指定
x,y配列もしくは配列に相当するもの
conditionでの条件が真Trueのときはx,
偽Falseのときはyを適用する.

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となりました.

トップページへ戻る

 スポンサーリンク

コメント

タイトルとURLをコピーしました