将 numpy.datetime64 转换为纪元时间
convert numpy.datetime64 into epoch time
我正在尝试将包含 numpy.datetime64 的 numpy 数组 new_feat_dt 转换为纪元时间。我想确保转换发生时日期保持为 utc 格式?
我正在使用 numpy 1.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'>
以上是因为 new_feat_dt 数组中的时间被认为是 GMT。我希望它被视为我的当地时间,即 ('US/Eastern')。
正确的转换应该是这样的:
[1564078981,1564079101,1564079221]
numpy.datetime64
是 timezone naive datetime type。要将时区信息添加到日期时间中,请尝试将 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
初始化所有 new_feat_dt
。
我正在尝试将包含 numpy.datetime64 的 numpy 数组 new_feat_dt 转换为纪元时间。我想确保转换发生时日期保持为 utc 格式? 我正在使用 numpy 1.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'>
以上是因为 new_feat_dt 数组中的时间被认为是 GMT。我希望它被视为我的当地时间,即 ('US/Eastern')。 正确的转换应该是这样的: [1564078981,1564079101,1564079221]
numpy.datetime64
是 timezone naive datetime type。要将时区信息添加到日期时间中,请尝试将 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
初始化所有 new_feat_dt
。