如何将变量从 Python 转换datetime.timedelta
为numpy.timedelta64
?
问问题
6610 次
2 回答
6
array([datetime.timedelta(1)], dtype="timedelta64[ms]")[0]
这个链接解释了很多关于datetime64
和的事情timedelta64
。这也与转换datetime.datetime
为datetime64
于 2012-10-29T13:53:47.837 回答
1
您可以通过将(天、秒和微秒)中np.array
的基本整数表示映射到相应的表示,然后求和来做到这一点,而无需创建一个。datetime.timedelta
np.timedelta64
这种方法的缺点是,虽然您将获得相同的增量持续时间,但您不会总是获得相同的单位。这种方法的好处是,如果您要转换单个值而不是大型值数组,它通常会比创建数组更快。
您也可以只np.timedelta64()
用 a调用datetime.timedelta
,但这种方法只返回 anp.timedelta64()
微秒单位。
from functools import reduce
import operator
TIME_DELTA_ATTR_MAP = (
('days', 'D'),
('seconds', 's'),
('microseconds', 'us')
)
def to_timedelta64(value: datetime.timedelta) -> np.timedelta64:
return reduce(operator.add,
(np.timedelta64(getattr(value, attr), code)
for attr, code in TIME_DELTA_ATTR_MAP if getattr(value, attr) > 0))
于 2019-05-24T20:37:20.630 回答