annotate numerics/filters.py @ 164:c16940bd2cee

this works
author Jeff Hammel <k0scist@gmail.com>
date Fri, 15 May 2015 16:59:09 -0700
parents 3a1f04f33feb
children c2f545f32025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
1 """
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
2 filter functions for stats
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
3 """
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
4
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
5 __all__ = ['mean', 'array_mean', 'median']
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
6
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
7 def mean(data):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
8 return sum(data)/float(len(data))
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
9
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
10 def array_mean(data):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
11 if not data:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
12 return []
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
13 lengths = [len(i) for i in data]
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
14 if len(set(lengths)) != 1:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
15 raise AssertionError("Different lengths to array_mean: {}".format(' '.join(lengths)))
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
16 return [mean(i) for i in zip(*data)]
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
17
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
18 def median(data):
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
19 length = len(data)
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
20 index = length/2
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
21 if length % 2:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
22 return data[index]
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
23 else:
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
24 return 0.5*(data[index-1] + data[index])
3a1f04f33feb various generics
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
25