Cannot populate NumPy datetime64 arrays

前端 未结 1 1016
傲寒
傲寒 2021-01-02 01:24

I\'m trying to create a NumPy array that will subsequently be populated by some datetime values. I can\'t seem to make it work.

import numpy as np
t = np.emp         


        
1条回答
  •  说谎
    说谎 (楼主)
    2021-01-02 01:59

    It should work if you also specify a time unit parameter when creating the array. For example:

    >>> 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]')
    

    And then you can also assign the values as required:

    >>> 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 doesn't permit datetimes with generic units (i.e. no units) to be represented. Creating the array t without the unit parameter and then trying to access the first element t[0] will raise this error:

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

    Here, NumPy isn't able to infer what units the representation of the datetime should have. Guessing might lead to erroneous values given the varying lengths of calendar months and years.

    This point isn't very explicit in the documentation but can be gleaned from the datetime page and is noted in the source code here.

    0 讨论(0)
提交回复
热议问题