Reputation: 113988
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.
Upvotes: 21
Views: 9417
Reputation: 604
Accepted answer is right but currently numpy
's docs recommend using isin
function instead of in1d
Upvotes: 5
Reputation: 500407
Use numpy.in1d()
:
In [6]: np.in1d(a, [14, 16, 18])
Out[6]: array([False, False, False, True, False, True, False], dtype=bool)
Upvotes: 32