这个问题已经有了答案:
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) thantolist())`:
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
我发现了一些其他选项-首先将generaldatetime64转换为指定单位的格式之一:
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/

10-12 21:59