与numpy.timedelta64的时间差(秒)

2024-04-29 00:15:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: numpynpdt单位数字floatintprint
2条回答

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

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

解释:这里dtnumpy中的array scalar,它是零秩数组或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 datetime API,正如这里的回答J.F. Sebastien中所解释的那样。

要使用^{} 1.7 experimental datetime APInumpy.timedelta64()对象获取秒数:

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

相关问题 更多 >