view numerics/filters.py @ 186:c2f545f32025

move conformity ensurance to separate function
author Jeff Hammel <k0scist@gmail.com>
date Fri, 21 Jul 2017 12:46:55 -0700
parents 3a1f04f33feb
children
line wrap: on
line source

"""
filter functions for statistics
"""

from .conformity import ensure_row_lengths

__all__ = ['mean', 'array_mean', 'median']

def mean(data):
    """return arithemetic mean of a vector"""

    return sum(data)/float(len(data))


def array_mean(data):
    if not data:
        return []
    ensure_row_lengths(data)
    return [mean(i) for i in zip(*data)]


def median(data):
    length = len(data)
    index = length/2
    if length % 2:
        return data[index]
    else:
        return 0.5*(data[index-1] + data[index])