## Mask out specific values from an array

Question

Example:

I have an array:

```
array([[1, 2, 0, 3, 4],
[0, 4, 2, 1, 3],
[4, 3, 2, 0, 1],
[4, 2, 3, 0, 1],
[1, 0, 2, 3, 4],
[4, 3, 2, 0, 1]], dtype=int64)
```

I have a set (variable length, order doesn't matter) of "bad" values:

```
{2, 3}
```

I want to return the mask that hides these values:

```
array([[False, True, False, True, False],
[False, False, True, False, True],
[False, True, True, False, False],
[False, True, True, False, False],
[False, False, True, True, False],
[False, True, True, False, False]], dtype=bool)
```

What's the simplest way to do this in NumPy?

Show source

## Answers ( 3 )

There might be simpler ways than this. But this can be one way:

Output:

Use

`np.in1d`

that gives us a flattened mask of such matching occurrences and then reshape back to input array shape for the desired output, like so -Sample run -

This does iterate, but if the

`(2,3)`

set is small (relative to the size of`x`

) this is relatively fast. In fact for small`arr2`

,`np.in1d`

does this:Making a masked array from this: