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.

Without wasting your time, Let’s start This Article.

Table of Contents

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

**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.**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 x[~np.array(mask)] # array([[1, 2], # [2, 3]])

Or from numpy masked array:

newX = np.ma.array(x, mask = np.column_stack((mask, mask))) newX # masked_array(data = # [[1 2] # [2 3] # [-- --]], # mask = # [[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]]) In [382]: x[~rowmask,:] 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 In [394]: xmask Out[394]: array([[False, False], [False, False], [ True, True]], dtype=bool) In [395]: np.ma.MaskedArray(x,xmask) Out[395]: masked_array(data = [[1 2] [2 3] [-- --]], mask = [[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]: masked_array(data = [[1 --] [-- --] [-- 4]], mask = [[False True] [ True True] [ True False]], fill_value = 999999) In [404]: np.ma.masked_equal(x,2) Out[404]: masked_array(data = [[1 --] [-- 3] [3 4]], mask = [[False True] [ True False] [False False]], fill_value = 2) In [406]: np.ma.masked_outside(x,2,3) Out[406]: masked_array(data = [[-- 2] [2 3] [3 --]], mask = [[ True False] [False False] [False True]], fill_value = 999999)

**Summery**

It’s all About this issue. Hope all Methods helped you a lot. Comment below Your thoughts and your queries. Also, Comment below which Method worked for you? Thank You.

**Also, Read**