Numerical Python question
David Mertz
mertz at gnosis.cx
Sun Oct 12 22:52:31 EDT 2003
More information about the Python-list mailing list
Sun Oct 12 22:52:31 EDT 2003
- Previous message (by thread): Numerical Python question
- Next message (by thread): Numerical Python question
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
mcrider at bigfoot.com (2mc) wrote previously: |I apologize for not making this clear. If an array were to be viewed |as a spreadsheet, then rows would be individual days and columns would |be date, open price, high price, etc. Aside from the speed increase, Numeric provides quite a few handy syntax tricks. For example, in a crude version of your problem, I first create the "spreadsheet", and populate it with silly open/close/high/low prices. >>> from Numeric import * >>> stock = zeros((5,20),Int) >>> stock[0,:] = range(20) # number the days >>> stock[1,:] = [10]*20 # open price >>> stock[2,:] = [11]*20 # close price >>> stock[3,:] = [13]*20 # high price >>> stock[4,:] = [8]*20 # low price >>> print stock [[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] [10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10] [11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11] [13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13] [ 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8]] Of course, it is an odd stock that opens, closes, and peaks at the same price on every day. :-) Next, I can find a particular average high for a range: >>> avg_high_day5to15 = sum(stocks[3,5:15])/len(stocks[3,5:15]) >>> avg_high_day5to15 13 You might want to generalize it in a function: >>> def ten_day_avg_high(beg): ... return sum(stocks[3,beg:beg+10])/len(stocks[3,beg:beg+10]) Which let's you calculate your running averages: >>> map(ten_day_avg_high, range(20)) [13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13] This works even near the end, where there are fewer than ten days to average--we divide by the length of the tail, not by '10' to make sure of that. You can work out deviations and other statistics in similar ways. Yours, David... -- Keeping medicines from the bloodstreams of the sick; food from the bellies of the hungry; books from the hands of the uneducated; technology from the underdeveloped; and putting advocates of freedom in prisons. Intellectual property is to the 21st century what the slave trade was to the 16th.
- Previous message (by thread): Numerical Python question
- Next message (by thread): Numerical Python question
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list