On Dec 18, 2008, at 1:33 PM, Matt Knox wrote:
Timmie <timmichelsen <at> gmx-topmail.de> writes:
Hello, I try to correlate two timeseries.
I don not understand, why I get an error for incompatile size.
I would say this is a bug. Although I am not 100% certain the cause of it at the moment. I think it happens when the correlate function tries to create a new TimeSeries to store the result in and somehow the dates of the input TimeSeries get passed along to create the resulting TimeSeries (which will be of size 1).
np.correlate(x,y) returns a 1D array of size 1. Because x and y are TimeSeries, it tries to create a new series, but don't know what to do w/ the dates, so it chokes.
A simple work around for now is to just call np.correlate on the underlying raw array (using the .data attribute of the TimeSeries). Note that np.correlate will NOT work properly with MaskedArray's that contain masked value. In general you should assume functions from the top level numpy namespace will not work properly with masked values.
Indeed: when manipulating time series, if you don't need to keep track of the dates, just drop them by using .series (better than .data, as 'masked values shouldn't be trusted anyway'(TM)...)
Pierre, I think we should probably up-cast the TimeSeries to a plain MaskedArray when _update_from is called with dates of a different size than the data. I'm sure other functions in numpy crash on TimeSeries objects for the same reason. What do you think?
Right now, nothing. I need to see a better example. Here, yes, we could drop the dates and return a MaskedArray. In other cases, there's a legitimate reason for trying to output a TimeSeries.