Median Absolute Deviationđź”—
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #!/usr/bin/env python3
import numpy as N
def mad(a, axis=None):
"""
Compute *Median Absolute Deviation* of an array along given axis.
"""
# Median along given axis, but *keeping* the reduced axis so that
# result can still broadcast against a.
med = N.median(a, axis=axis, keepdims=True)
mad = N.median(N.absolute(a - med), axis=axis) # MAD along given axis
return mad
if __name__ == '__main__':
x = N.arange(4 * 5, dtype=float).reshape(4, 5)
print("x =\n", x)
print("MAD(x, axis=None) =", mad(x))
print("MAD(x, axis=0) =", mad(x, axis=0))
print("MAD(x, axis=1) =", mad(x, axis=1))
print("MAD(x, axis=(0, 1)) =", mad(x, axis=(0, 1)))
|
Source: mad.py