Trying to understand masking Trying to understand masking numpy numpy

Trying to understand masking


The ndimage filters do not respect masked arrays' masks. Instead, "mask" an ordinary NumPy array with nan values, and then use ndimage.generic_filter to call np.nanmedian:

import scipy.ndimage as ndiimport matplotlib.pyplot as pltimport numpy as npnp.random.seed(seed=182)# h, w = 901, 877h, w = 10, 10mask = np.random.randint(2, size=(h, w))img = np.random.rand(h, w)img_masked = np.where(mask, img, np.nan)size = 3img_masked_median = ndi.generic_filter(img_masked, np.nanmedian, size=size)img_unmasked_median = ndi.median_filter(img, size=size)fig, ax = plt.subplots(nrows=2, ncols=2)ax[0,0].imshow(img)ax[0,0].set_title('img')ax[0,1].imshow(img_masked)ax[0,1].set_title('img_masked')ax[1,0].imshow(img_unmasked_median)ax[1,0].set_title('img_unmasked_median')ax[1,1].imshow(img_masked_median)ax[1,1].set_title('img_masked_median')plt.show()

enter image description here