条件式を指定するNumPyのwhereの使い方2017-05-25条件式を指定するNumPyのwhereの使い方NumPyのndarrayは、np.where関数に条件式を指定することで、目的の要素のインデックスを取得することができます。ヒストグラムのインデックスを取得したいときや、しきい値を設けて値を制限したいときなどに便利なので、覚えておくと役に立つはずです。np.wherenp.whereは、条件を満たす要素のインデックスを返す関数です。APIドキュメントは以下のようになっています。条件もしくはbool値を指定します。(省略可能)conditionで指定された条件に対してTrueならxを、Falseならyを返します。yのshapeは元の配列と揃えるようにしましょう。(これは任意入力ですがどちらも指定する必要があります)returns:抽出されたndarrayの要素のindexが返されます。元のndarrayが二次元のときは次元ごとのindexが記された一次元配列が2つ返されます。yが指定されていれば、要素がxまたはyに変換されたndarrayが返されます。10]のように、インデックス部分に条件を指定することで、目的の要素を取得することができました。np.whereを使うことで、値ではなくインデックスを取得することができます。基本的な使い方は、第一引数に条件のみを指定する方法です。以下のように第一引数に条件式を指定することで、条件を満たす要素のインデックスを取得することができます。10未満の要素だけのindexとなっていることが確認できます。続いて多次元配列でも試してみます。偶数だけ取り出してみる。2]))一瞬困惑するかもしれませんが、同様にインデックスが取得されています。2)は偶数になっていることが分かります。np.whereを使った三項演算子np.whereはプログラムの三項演算子のような使い方ができます。引数に抽出したい要素の条件を指定し、第二引数以降で条件を満たすとき値と満たさないときの値を指定することができます。yを上手く使うことで、配列の一部の要素だけ変換したいときに便利になります。条件のあとに条件を満たす場合と満たさない場合にどのような値を返すか指定しておけば、その値を要素とする新しい配列を返します。偶数ならeven,奇数ならoddと返す。Trueの時だけ値を設定するとエラーが返ってくる。偶数ならeven,奇数ならoddと返す。奇数のところだけcの要素に取り替える。121]])最後にbroadcastingを紹介します。最後の引数に、配列やタプルのようなイテレーション可能な値を指定すると、繰り返したときにインデックスアクセスしたときの値が使用されます。4)が繰り返されたものが使われている。4]])DeepAgeではAIに関する厳選した内容を記事にしてお届けします。