Mask numpy array using intervals Mask numpy array using intervals numpy numpy

Mask numpy array using intervals


Given an array:

In [1]: x = np.arange(100).reshape(10, 10)

and a second array of lower and upper bounds (l, u),

In [2]: y = np.array([[6, 11], [41, 47], [85, 98]])

iterate through the bounds array and (re)mask the data array according to the bounds

In [3]: for l, u in y:  ....:     x = np.ma.masked_where((x > l) & (x < u), x)  ....: In [4]: xOut[4]: masked_array(data = [[0 1 2 3 4 5 6 -- -- --] [-- 11 12 13 14 15 16 17 18 19] [20 21 22 23 24 25 26 27 28 29] [30 31 32 33 34 35 36 37 38 39] [40 41 -- -- -- -- -- 47 48 49] [50 51 52 53 54 55 56 57 58 59] [60 61 62 63 64 65 66 67 68 69] [70 71 72 73 74 75 76 77 78 79] [80 81 82 83 84 85 -- -- -- --] [-- -- -- -- -- -- -- -- 98 99]],             mask = [[False False False False False False False  True  True  True] [ True False False False False False False False False False] [False False False False False False False False False False] [False False False False False False False False False False] [False False  True  True  True  True  True False False False] [False False False False False False False False False False] [False False False False False False False False False False] [False False False False False False False False False False] [False False False False False False  True  True  True  True] [ True  True  True  True  True  True  True  True False False]],       fill_value = 999999)