繁华开满天机
您可以很自然地使用纳秒级甚至更精确的时间单位(ps,fs,as)numpy。Numpy有自己的Datetimes和Timedeltas实现,因此您可以尝试np.datetime64:import numpy as npdef 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算术也是可能的:>>> t1, t2 = str_to_ns("1:0:12.12345678"), str_to_ns("1:0:12.12")>>> t1 - t2numpy.timedelta64(3456780,'ns')我同意这不是很自然,但是通过这种方式,您可以使用just获得任意的高时间精度numpy。