与numpy.timedelta64的时间差(秒)



如何从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

我想将dt转换为以秒为单位表示时差的数字(int或float)。

使用numpy 1.7实验日期时间API从numpy.timedelta64()对象获取秒数:

seconds = dt / np.timedelta64(1, 's')

您可以通过"包装"日期时间项访问它:

>>> dt.item().total_seconds()
65.0

解释:这里dtnumpy中的数组标量,它是零秩数组或0维数组。所以你会发现这里的dt也有ndarray拥有的所有方法,例如dt.astype('float')。但是它包装了一个python对象,在本例中是一个datetime.timedelta对象。

要获得原始标量,可以使用dt.item()。要对数组标量进行索引,可以使用getitem的一些奇怪语法,使用一个空元组:

>>> dt[()]
array(datetime.timedelta(0, 65), dtype='timedelta64[s]')

这应该适用于numpy的所有版本,但如果您使用的是numpy v1.7+,则最好直接使用较新的numpy日期时间API,正如J.F.Sebastien在这里的回答中所解释的那样。

您可以简单地使用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)

最新更新