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]

如果你知道一些秘诀可以用 numpy 和快速(计算)做到这一点,请告诉我,因为这个列表实际上是巨大的......

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 回答