sas*_*llo 39 python datetime numpy
如何从numpy.timedelta64变量获得几秒钟的时差?
time1 = '2012-10-05 04:45:18'
time2 = '2012-10-05 04:44:13'
dt = np.datetime64(time1) - np.datetime64(time2)
print dt
0:01:05
Run Code Online (Sandbox Code Playgroud)
我想转换dt
为数字(int或float),表示以秒为单位的时差.
jfs*_*jfs 67
要numpy.timedelta64()
使用numpy
1.7实验日期时间API从对象获取秒数:
seconds = dt / np.timedelta64(1, 's')
Run Code Online (Sandbox Code Playgroud)
wim*_*wim 30
您可以通过"包装"日期时间项访问它:
>>> dt.item().total_seconds()
65.0
Run Code Online (Sandbox Code Playgroud)
说明:这里dt
是一个阵列的标量中numpy
,这是一个零等级阵列或0维阵列.所以你会发现dt
这里也有ndarray拥有的所有方法,你可以这样做dt.astype('float')
.但是它包装了一个python对象,在这种情况下是一个datetime.timedelta
对象.
要获得原始标量,您可以使用dt.item()
.要索引数组标量,您可以使用空元组使用getitem的一些奇怪的语法:
>>> dt[()]
array(datetime.timedelta(0, 65), dtype='timedelta64[s]')
Run Code Online (Sandbox Code Playgroud)
这应该适用于numpy的所有版本,但是如果你使用numpy v1.7 +,最好直接使用较新的numpy datetime API,如JF Sebastien的答案中所述.
小智 8
您可以简单地使用 np.astype 将值转换为所需的时间单位,如示例所示:
timedelta = np.datetime64('2011-07-18')-np.datetime64('2011-07-16')
seconds = timedelta.astype('timedelta64[s]').astype(np.int32)
hours = timedelta.astype('timedelta64[h]').astype(np.int32)
Run Code Online (Sandbox Code Playgroud)