[SciPy-User] scikits.timeseries question
Robert Ferrell
ferrell at diablotech.com
Tue Dec 1 00:32:14 EST 2009
On Nov 30, 2009, at 9:03 PM, Pierre GM wrote:
> On Nov 30, 2009, at 9:59 PM, Robert Ferrell wrote:
>
>> This seems natural to me, (array + Date = array) although I do have
>> to
>> include an extra line sometimes to get a DateArray if I need it.
>> If I
>> need a timeseries, sometimes I can skip making the DateArray
>> explicitly.
>
> Well, keep in mind that Date was implemented a few years ago
> already, far before the new datetime64 dtype, and it was the easiest
> way we had to define a new datatype (well, a kind of datatype). I'll
> check how we can merge the two approaches when I'll have some time.
> Anyhow, in practice, a Date object will be seen as a np.object by
> numpy, and you end up having a ndarray with a np.object dtype.
Since a DateArray has more methods than a bare np.array, it would
surprise me if an array of Dates were a DateArray. That's why it
seems natural that np.array + Date = np.array. I think that behavior
will continue, right?
In any case, I find the timeseries scikit very useful, and while
there's always room for improvement, as it is you & Matt did a great
job.
>
>> Is the issue that sd is a Date and not a DateArray? You can always
>> make a DataArray with sd, of the correct length, and then add to
>> that:
>>
>> In [83]: sd = ts.Date('d', '2001-01-01')
>>
>> In [84]: d1 = ts.date_array(zeros(4) + sd)
>
> Wow, that's overkill ! Just make sd a DateArray:
>>>> np.arange(4) + ts.DateArray(sd)
>
> Now, because DateArray is a subclass of ndarray with a higher
> priority, its _add__ method takes over and the ouput is a DateArray.
Of course. I was just trying to show something by example. (For
silly reasons, I avoid the np.array + DateArray construct. A few
times I have mistakenly made DateArray + DateArray constructs
(forgetting I'd already promoted the first argument to a DateArray),
which rarely gives me what I want/expect. Silly, yes, but I code with
the brain I have, not the brain I wish I had:)
>
>>
>>> and I'm still confused about what this means:
>>>
>>>>> In [43]: da = ts.date_array((1,2,3,4), start_date=sd)
>>
>> This throws an exception for me.
>>
>> <type 'exceptions.ValueError'>: year=1 is before 1900; the datetime
>> strftime() methods require year >= 1900
>
>
> What version are you using ? And anyway, you get the exception only
> if you try to print it (as strftime is called only when calling repr/
> str)
In [178]: ts.__version__
Out[178]: '0.67.0.dev-r1570'
More information about the SciPy-User
mailing list