将numpy.datetime64转换为历元时间

将numpy.datetime64转换为历元时间,numpy,python-3.6,epoch,Numpy,Python 3.6,Epoch,我正在尝试将包含numpy.datetime64的numpy数组新特性转换为历元时间。我想确保转换发生时日期保持utc格式? 我正在使用NUMPY1.16.4和python3.6 我尝试了两种转换方法,如下面的代码所示 import numpy as np new_feat_dt = [np.datetime64('2019-07-25T14:23:01'), np.datetime64('2019-07-25T14:25:01'), np.datetime64('2019-07-25T14:2

我正在尝试将包含numpy.datetime64的numpy数组新特性转换为历元时间。我想确保转换发生时日期保持utc格式? 我正在使用NUMPY1.16.4和python3.6 我尝试了两种转换方法,如下面的代码所示

import numpy as np
new_feat_dt = [np.datetime64('2019-07-25T14:23:01'), np.datetime64('2019-07-25T14:25:01'), np.datetime64('2019-07-25T14:27:01')]

final= [(x - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's') for x in new_feat_dt]
print (final)
print(type(final[0]))

final2= [np.datetime64(x,'s').astype(int)  for x in new_feat_dt]
print (final2)
print(type(final2[0]))
上述代码的输出:

[1564064581.0, 1564064701.0, 1564064821.0]
<class 'numpy.float64'>
[1564064581, 1564064701, 1564064821]
<class 'numpy.int32'>
[1564064581.0、1564064701.0、1564064821.0]
[1564064581, 1564064701, 1564064821]
之所以出现上述情况,是因为new_feat_dt数组中的时间被视为GMT。我希望它被视为我的本地时间(“美国/东部”)。 正确的转换应如下所示:
[156407898115640791011564079221]

numpy.datetime64是一个。要将时区信息添加到日期时间中,请尝试使用python的
datetime
pytz
模块

import numpy as np
import pytz
from datetime import datetime
new_feat_dt = [np.datetime64('2019-07-25T14:23:01'), np.datetime64('2019-07-25T14:25:01'), np.datetime64('2019-07-25T14:27:01')]
eastern = pytz.timezone('US/Eastern')
final = [int(eastern.localize(dt.astype(datetime)).timestamp()) for dt in new_feat_dt]
print(final)
输出:

[1564078981, 1564079101, 1564079221]
使用
datetime.datetime
初始化所有的
新功能可能更好