将numpy.datetime64转换为历元时间
我正在尝试将包含numpy.datetime64的numpy数组新特性转换为历元时间。我想确保转换发生时日期保持utc格式? 我正在使用NUMPY1.16.4和python3.6 我尝试了两种转换方法,如下面的代码所示将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
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
初始化所有的新功能可能更好