'Numpy mask based on if a value is in some other list

I have searched high and low and just can't find a way to do it. (It's possible I was searching for the wrong terms.)

I would like to create a mask (eg: [True False False True True]) based on whether each value is in some other list.

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

So far the best I can come up with is a list comprehension.

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

Please let me know if you know of some secret sauce to do this with NumPy and fast (computationally), as this list in reality is huge.



Solution 1:[1]

Use numpy.in1d():

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

Solution 2:[2]

Accepted answer is right but currently numpy's docs recommend using isin function instead of in1d

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 NPE
Solution 2 sgt pepper