[SciPy-user] calculations using the datetime information of timeseries
Timmie
timmichelsen at gmx-topmail.de
Thu Nov 13 04:49:49 EST 2008
Hello Pierre,
>
first, thanks for the fast reply. I really appreciate it.
As note on my last email I may add that I simplyfied the functions (method 1-3).
The different methods were only created to illustrate how I handle/access the
series.
> Your `snew` object is only a reference to `series_dummy`. When you
> modify an element of snew, you're in fact modifying the corresponding
> element of `series_dummy`. That's a feature of Python, you would get
> the same result with lists:
> >>> a = [0,0,0]
> >>> b = a
> >>> b[0] = 1
> >>> a
> [1,0,0]
> If you want to avoid that, you can make snew a copy of series_dummy
> snew = series_dummy.copy()
OK, thanks for this gentle hint. I must re-read this in my basic python books...
> Finally, some comments for method #3:
> You want to create a new timeseries based on the result of some
> calculation on the data part, but still using the dates of the initial
> series ?
> If you don't have any missing values, perform the computation on
> series._data, that'll be faster. If you have mssing values, use the
> series._series instead to access directly the MaskedArray methods, and
> not the timeseries ones (you don't want to carry the dates around if
> you don't need them).
> As a wrap-up:
> Try to avoid looping if you can.
Yes, I noticed that.
But I couldn't find another way to pass the individual datetimes to my
calculation function which expects only one value at once (i.e. it is not
designed to calculate full arrays).
>You said a generic form of your function is:
> >
> > def myfunction(datetime_obj, scaling_factor):
> > pass
>
> Do you really need datetime objects ?
Yes, in geoscience/earthscience and engineering it's quite normal to have
parameters which are date/your of your dependent like: position of planets,
state of the ocean, etc.
> In your example, you were using
> series.dates[i].datetime.hour, a list. You should have used
> series.dates.hour, which is an array. Using functions on an array as a
> whole is far more efficient than using the same functions on each
> element of the array.
I will try to adjust the function in order to let it calculate the directly with
array.
But the basic problem I haven't solved yet is to pass a signle datetime_obj to
the myfunction along with further parameters.
Regards,
Timmie
More information about the SciPy-User
mailing list