基于值是否在某个其他列表中的Numpy掩码

时间:2012-11-29 15:26:43

标签: python numpy

我已经搜索过高低,并且无法找到一种方法(可能我正在寻找错误的术语。)

我想基于每个值是否在其他列表中来创建一个掩码(例如[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和fast(计算)这样做,因为这个列表在现实中是巨大的......

2 个答案:

答案 0 :(得分:26)

使用numpy.in1d()

In [6]: np.in1d(a, [14, 16, 18])
Out[6]: array([False, False, False,  True, False,  True, False], dtype=bool)

答案 1 :(得分:1)

可接受的答案是正确的,但目前numpy的文档建议使用isin function而不是in1d