这个问题已经有了答案:
Converting between datetime, Timestamp and datetime64
12个答案
我基本上也面临同样的问题发布在这里:Converting between datetime, Timestamp and datetime64
但我找不到满意的答案,我的问题是如何从numpy.datetime64类型中提取日期时间:
如果我尝试:
np.datetime64('2012-06-18T02:00:05.453000000-0400').astype(datetime.datetime)
它给了我:
13399992054530万升
我当前的解决方案是将datetime64转换为字符串,然后再次转换为datetime。但这似乎是一个很愚蠢的方法。
最佳答案
向……借款
Converting between datetime, Timestamp and datetime64
In [220]: x
Out[220]: numpy.datetime64('2012-06-17T23:00:05.453000000-0700')
In [221]: datetime.datetime.utcfromtimestamp(x.tolist()/1e9)
Out[221]: datetime.datetime(2012, 6, 18, 6, 0, 5, 452999)
考虑到时区,我认为这是对的。不过看起来相当笨重。
astype('O') is better (I think) than
tolist())`:In [294]: datetime.datetime.utcfromtimestamp(x.astype('O')/1e9)
Out[294]: datetime.datetime(2012, 6, 18, 6, 0, 5, 452999)
或者在本地获取日期时间:
In [295]: datetime.datetime.fromtimestamp(x.astype('O')/1e9)
但在
test_datatime.py
文件中https://github.com/numpy/numpy/blob/master/numpy/core/tests/test_datetime.py
我发现了一些其他选项-首先将general
datetime64
转换为指定单位的格式之一:In [296]: x.astype('M8[D]').astype('O')
Out[296]: datetime.date(2012, 6, 18)
In [297]: x.astype('M8[ms]').astype('O')
Out[297]: datetime.datetime(2012, 6, 18, 6, 0, 5, 453000)
这适用于阵列:
In [303]: np.array([[x,x],[x,x]],dtype='M8[ms]').astype('O')[0,1]
Out[303]: datetime.datetime(2012, 6, 18, 6, 0, 5, 453000)
关于python - 如何将numpy datetime64转换为datetime [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29753060/