[Tutor] Aaagh! Stack arrays!?! calc average
Ben Sherman
bensherman at gmail.com
Wed May 2 00:57:22 CEST 2007
On 5/1/07, John Washakie <washakie at gmail.com> wrote:
>
> It aint pretty! And if I had just walked away, it probably would've
> taken half the time in the morning, but here's what I've come up with
> (any suggestions for improvements, or course are welcome):
>
> for d in data:
> w = len(d)
> if d[0] <= tinit+60:
> d = column_stack(d)
> cnt,sum = cnt+1,sum+d
>
> else:
> avg = sum/(ones(w)*cnt)
> tinit,cnt,sum = d[0],0,zeros(n)
> if init==0:
> newData,init = avg,1
> else:
> newData = append(newData,avg,axis=0)
>
> return newData
>
Sorry my last reply was so terse - I needed to catch a train. :)
So you need to check out a couple of functions - namely sum.
>>> numbers=[1,2,3,4,5]
>>> numbers.append(6)
>>> numbers
[1, 2, 3, 4, 5, 6]
>>> sum(numbers)
21
>>> len(numbers)
6
>>> sum(numbers)/len(numbers)
3
WAIT WAIT hold the phone!? 21/5 is NOT 3! It's 3.5! The short story here
is that you have to make on of the numbers a floating point to get the
result to return a float, so do this:
>>> sum(numbers)*1.0/len(numbers)
3.5
So there is our average. If floor division doesn't make sense to you, you
aren't alone. This changes in Python 3000. You can read about floor
division here:
http://www.python.org/doc/2.2.3/whatsnew/node7.html
I don't quite know what your stack is for - it can probably be accomplished
using some slices or other fun stuff.
Good luck, and welcome to python!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20070501/e0ce737a/attachment.htm
More information about the Tutor
mailing list