3 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以很自然地使用納秒級(jí)甚至更精確的時(shí)間單位(ps,fs,as)numpy。Numpy有自己的Datetimes和Timedeltas實(shí)現(xiàn),因此您可以嘗試np.datetime64:
import numpy as np
def str_to_ns(time_str):
"""
input: time in a format `hh:mm:ss.up_to_9_digits`
"""
h, m, s = time_str.split(":")
int_s, ns = s.split(".")
ns = map(lambda t, unit: np.timedelta64(t, unit),
[h,m,int_s,ns.ljust(9, '0')],['h','m','s','ns'])
return sum(ns)
然后,您可以通過以下方式使用此功能:
>>> src = "1:2:34.123456789"
>>> out = str_to_ns(src)
>>> print(out)
3754123456789 nanoseconds
>>> out / np.timedelta64(1,'h')
1.0428120713302778
>>> out / np.timedelta64(1,'m')
62.568724279816664
>>> out / np.timedelta64(1,'s')
3754.123456789
算術(shù)也是可能的:
>>> t1, t2 = str_to_ns("1:0:12.12345678"), str_to_ns("1:0:12.12")
>>> t1 - t2
numpy.timedelta64(3456780,'ns')
我同意這不是很自然,但是通過這種方式,您可以使用just獲得任意的高時(shí)間精度numpy。
添加回答
舉報(bào)