np.isin()について
概要
np.where()
を使って特定の条件を満たす項目を抜き出す処理は良く行う。
今回はその発展として、複数の値に一致する項目を抜き出してきたいという状況を考える。
そのような状況では、np.isin()
を使えばよいという話。
詳細
具体的には以下のようなフルーツ( fruits
)と食べたいものリスト( i_want_to_eat
)があるとして、自分の食べたいものに該当するインデックスを知りたいとする。
>>> fruits = ['apple', 'ringo', 'banana', 'mikan'] >>> i_want_to_eat = ['ringo', 'mikan']
np.isin()
を使うと以下のようにfruit
に入っている複数のフルーツの内i_want_to_eat
に入っているフルーツに該当する部分がTrue、それ以外にFalseが入った配列が返ってくる。
>>> fruits = np.array(fruits) >>> i_want_to_eat = ['ringo', 'mikan'] >>> np.isin(fruits, i_want_to_eat) array([False, True, False, True])
もし配列からそのフルーツのみ抜き出したければ、普通にnumpyのブールインデックス参照を行えばよい
>>> fruits[np.isin(fruits, i_want_to_eat)] array(['ringo', 'mikan'], dtype='<U6')
以上。 普通にマニュアルに書いてあるけど、ちょっと調べてなかなかたどり着けなかったので、メモ代わりに書いた。