numpy.timedelta64的时差(秒)

时间:2013-02-17 12:07:10

标签: 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

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

3 个答案:

答案 0 :(得分:66)

使用numpy 1.7 experimental datetime APInumpy.timedelta64()对象获取秒数:

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

答案 1 :(得分:29)

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

>>> 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中的答案所述。

答案 2 :(得分:4)

您可以使用 np.astype 简单地将值转换为所需的时间单位,如示例所示:

CREATE TABLE Personal_trainer (
employee_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT, 
...
FOREIGN KEY(customer_id) REFERENCES customer(id),