将数组 datatime.datetime 转换为 float

ale*_*son 2 python arrays datetime numpy

是否有可能转换这样的东西;

array([datetime.datetime(2014, 2, 1, 0, 0, 0, 100000),
       datetime.datetime(2014, 2, 1, 0, 0, 0, 300000),
       datetime.datetime(2014, 2, 1, 0, 0, 0, 500000), ...,
       datetime.datetime(2014, 2, 1, 19, 30, 0, 500000),
       datetime.datetime(2014, 2, 1, 19, 30, 0, 700000),
       datetime.datetime(2014, 2, 1, 19, 30, 0, 900000)], dtype=object)
Run Code Online (Sandbox Code Playgroud)

对此:

array([  1.39277301e+09,   1.39277301e+09,   1.39277301e+09, ...,
         1.39285442e+09,   1.39285442e+09,   1.39285442e+09])
Run Code Online (Sandbox Code Playgroud)

我基本上想将 转换datetime.datetimetimestamp, with dtype = float

Ste*_*uch 5

获得 a 的最佳方法timestamp是从 as 中减去纪元datetime

代码:

import datetime as dt

times = np.array([
    dt.datetime(2014, 2, 1, 0, 0, 0, 100000),
    dt.datetime(2014, 2, 1, 0, 0, 0, 300000),
    dt.datetime(2014, 2, 1, 0, 0, 0, 500000),
])

# get a datetime that is equal to epoch
epoch = dt.datetime(1970, 1, 1)

for t in [(d - epoch).total_seconds() for d in times]:
    print('%.6f' % t)
Run Code Online (Sandbox Code Playgroud)

结果:

1391212800.100000
1391212800.300000
1391212800.500000
Run Code Online (Sandbox Code Playgroud)