2014-12-14 16 views
5

Próbuję utworzyć tablicę numpy, która zostanie następnie wypełniona niektórymi wartościami datetime. Nie mogę sprawić, żeby to działało, czy możesz pomóc?Nie można zapełnić tablic numpy datetime64

import numpy as np 
t = np.empty(3,dtype='datetime64') 
t 

Dostaję TypeError: Invalid datetime unit "generic" in metadata. samo gdy próbuję:

import numpy as np 
t = np.empty(3,dtype='datetime64') 
t[0] = np.datetime64('2014-12-12 20:20:20') 

uzyskać:

TypeError : Cannot cast numpy timedelta64 scalar from metadata [m] to according to the rule 'same_kind'.

Dzięki z góry za pomóc!

Odpowiedz

5

Powinno działać, jeśli podczas tworzenia tablicy określono również parametr jednostki czasu. Na przykład:

>>> t = np.empty(3, dtype='datetime64[s]') 
>>> t 
array(['1970-01-01T00:00:00+0000', '1970-01-01T00:00:00+0000', 
     '1970-01-01T00:00:00+0000'], dtype='datetime64[s]') 

a następnie można również przypisać wartości zgodnie z wymaganiami:

>>> t[0] = np.datetime64('2014-12-12 20:20:20') 
>>> t 
array(['2014-12-12T20:20:20+0000', '1970-01-01T00:00:00+0000', 
     '1970-01-01T00:00:00+0000'], dtype='datetime64[s]') 

NumPy nie zezwala datetimes z jednostkami generycznych (czyli bez lokali) mają być reprezentowane. Tworzenie tablicy t bez parametru jednostki, a następnie próbuje uzyskać dostęp do pierwszego elementu t[0] podniesie ten błąd:

ValueError: Cannot convert a NumPy datetime value other than NaT with generic units 

Tutaj NumPy nie jest w stanie wywnioskować, jakie jednostki reprezentacja datetime powinien mieć. Zgadywanie może prowadzić do błędnych wartości, biorąc pod uwagę różne długości miesięcy i lat kalendarzowych.

Ten punkt nie jest bardzo wyraźny w dokumentacji, ale można go pobrać z datetime page i jest zapisany w kodzie źródłowym here.

+1

Tak, wczoraj było dla mnie zdecydowanie za późno, ponieważ nie widziałem tego na stronie datetime ... Spotkaj się, wielkie dzięki. – caliloo

+0

Bez problemu - cieszę się, że było pomocne –

+0

Dzięki za pomoc! Ja też byłam ślepa na doktorów ...^_ ~ – Sardathrion

Powiązane problemy