如何从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),表示以秒为单位的时差。
答案 0 :(得分:66)
使用numpy
1.7 experimental datetime API从numpy.timedelta64()
对象获取秒数:
seconds = dt / np.timedelta64(1, 's')
答案 1 :(得分:29)
您可以通过“已包装”的日期时间项目访问它:
>>> dt.item().total_seconds()
65.0
解释:此处dt
是numpy
中的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),