16

私は高低を検索しましたが、それを行う方法を見つけることができません(間違った用語を検索していた可能性があります)。

各値が他のリストにあるかどうかに基づいて、マスク([True False False True True]など)を作成したいと思います。

a=np.array([11,12,13,14,15,16,17])
mask= a in [14,16,8] #(this doesnt work at all!)
#I would like to see [False False False True False True False]

これまでのところ、私が思いつくことができる最高のものはリスト内包です

mask = [True if x in other_list else False for x in my_numpy_array]

このリストは実際には膨大なので、(計算上)しびれと高速でこれを行うための秘密のソースを知っているかどうか教えてください...

4

2 に答える 2

29

使用numpy.in1d()

In [6]: np.in1d(a, [14, 16, 18])
Out[6]: array([False, False, False,  True, False,  True, False], dtype=bool)
于 2012-11-29T15:29:29.993 に答える
2

受け入れられた答えは正しいですが、現在numpyのドキュメントでは、代わりにisin関数を使用することを推奨していますin1d

于 2020-01-12T10:35:08.330 に答える