# How to properly mask a numpy 2D array?

Hello Guys, How are you all? Hope You all Are Fine. Today We Are Going To learn about How to properly mask a numpy 2D array in Python. So Here I am Explain to you all the possible Methods here.

## How to properly mask a numpy 2D array?

1. How to properly mask a numpy 2D array?

`np.ma` makes most sense when there's a scattering of masked values. It isn't of much value if you want want to select, or deselect, whole rows or columns.

2. properly mask a numpy 2D array

`np.ma` makes most sense when there's a scattering of masked values. It isn't of much value if you want want to select, or deselect, whole rows or columns.

## Method 1

Is this what you are looking for?

```import numpy as np
# array([[1, 2],
#        [2, 3]])
```

```newX = np.ma.array(x, mask = np.column_stack((mask, mask)))
newX

#  [[1 2]
#  [2 3]
#  [-- --]],
#  [[False False]
#  [False False]
#  [ True  True]],
#        fill_value = 999999)```

## Method 2

Your `x` is 3×2:

```In [379]: x
Out[379]:
array([[1, 2],
[2, 3],
[3, 4]])
```

Make a 3 element boolean mask:

```In [380]: rowmask=np.array([False,False,True])
```

That can be used to select the rows where it is True, or where it is False. In both cases the result is 2d:

```In [381]: x[rowmask,:]
Out[381]: array([[3, 4]])

Out[382]:
array([[1, 2],
[2, 3]])
```

This is without using the MaskedArray subclass. To make such array, we need a mask that matches `x` in shape. There isn’t provision for masking just one dimension.

```In [393]: xmask=np.stack((rowmask,rowmask),-1)  # column stack

Out[394]:
array([[False, False],
[False, False],
[ True,  True]], dtype=bool)

Out[395]:
[[1 2]
[2 3]
[-- --]],
[[False False]
[False False]
[ True  True]],
fill_value = 999999)
```

Applying `compressed` to that produces a raveled array: `array([1, 2, 2, 3])`

Since masking is element by element, it could mask one element in row 1, 2 in row 2 etc. So in general `compressing`, removing the masked elements, will not yield a 2d array. The flattened form is the only general choice.

`np.ma` makes most sense when there’s a scattering of masked values. It isn’t of much value if you want want to select, or deselect, whole rows or columns.

===============

Here are more typical masked arrays:

```In [403]: np.ma.masked_inside(x,2,3)
Out[403]:
[[1 --]
[-- --]
[-- 4]],
[[False  True]
[ True  True]
[ True False]],
fill_value = 999999)

Out[404]:
[[1 --]
[-- 3]
[3 4]],
[[False  True]
[ True False]
[False False]],
fill_value = 2)

Out[406]:
[[-- 2]
[2 3]
[3 --]],