'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 |