astropy.stats.mad_std(data, axis=None, func=None, ignore_nan=False)[source]#

Calculate a robust standard deviation using the median absolute deviation (MAD).

The standard deviation estimator is given by:

\[\sigma \approx \frac{\textrm{MAD}}{\Phi^{-1}(3/4)} \approx 1.4826 \ \textrm{MAD}\]

where \(\Phi^{-1}(P)\) is the normal inverse cumulative distribution function evaluated at probability \(P = 3/4\).


Data array or object that can be converted to an array.

axisNone, int, or tuple of int, optional

The axis or axes along which the robust standard deviations are computed. The default (None) is to compute the robust standard deviation of the flattened array.

funccallable(), optional

The function used to compute the median. Defaults to for masked arrays, otherwise to numpy.median.


Ignore NaN values (treat them as if they are not in the array) when computing the median. This will use if axis is specified, or numpy.nanmedian if axis=None and numpy’s version is >1.10 because nanmedian is slightly faster in this case.

mad_stdfloat or ndarray

The robust standard deviation of the input data. If axis is None then a scalar will be returned, otherwise a ndarray will be returned.


>>> import numpy as np
>>> from astropy.stats import mad_std
>>> rand = np.random.default_rng(12345)
>>> madstd = mad_std(rand.normal(5, 2, (100, 100)))
>>> print(madstd)