[Tutor] using datetime and calculating hourly average
bob gailer
bgailer at gmail.com
Tue Jul 7 17:09:57 CEST 2009
John [H2O] wrote:
> Here's a function I wrote to calculate hourly averages:
>
> It seems a bit slow, however... any thoughts on how to improve it?
>
> def calc_hravg(X):
> """Calculates hourly average from input data"""
>
> X_hr = []
> minX = X[:,0].min()
> hr = dt.datetime(*minX.timetuple()[0:4])
>
> while hr <= dt.datetime(*X[-1,0].timetuple()[0:4]):
> nhr = hr + dt.timedelta(hours=1)
> ind = np.where( (X[:,0] > hr) & (X[:,0] < nhr) )
> vals = X[ind,1][0].T
> try:
> #hr_avg = np.sum(vals) / len(vals)
> hr_avg = np.average(vals)
>
> except:
> hr_avg = np.nan
> X_hr.append([hr,hr_avg])
> hr = hr + dt.timedelta(hours=1)
>
> return np.array(X_hr)
>
>
>
Someone else may know exactly what data you are working with and what
you have imported, but I, for one?, don't.
Please show us more of the program, including the import statement(s),
and some sample input data. What leads you to think is is slow?
One opportunity for improvement - take the invariant out of the while
statement.
q = dt.datetime(*X[-1,0].timetuple()[0:4])
while hr q:
--
Bob Gailer
Chapel Hill NC
919-636-4239
More information about the Tutor
mailing list