Circularspace

Numpy functions may not do what you think

Numpy has the ability to mask arrays and ignore their values for certain computations, called “masked arrays”. They contain a .mask attribute which is a boolean array, True where the value should be masked and False otherwise.

Numpy also comes with a suite of functions which can handle this masking naturally. Typically for a function in the np. namespace, there is a masked-array-aware version under the np.ma. namespace:

np.median  => np.ma.median
np.average => np.ma.average

A crucial thing to remember however is that standard numpy functions ignore the mask for a masked array.

This caught me out when sigma clipping values using astropy.stats.sigma_clip - which masks out values outside the sigma range. To ignore the sigma clipped values I should have used np.ma.median instead of np.median.