1

如何将变量从 Python 转换datetime.timedeltanumpy.timedelta64?

4

2 回答 2

6
array([datetime.timedelta(1)], dtype="timedelta64[ms]")[0]

这个链接解释了很多关于datetime64和的事情timedelta64。这也与转换datetime.datetimedatetime64

于 2012-10-29T13:53:47.837 回答
1

您可以通过将(天、秒和微秒)中np.array的基本整数表示映射到相应的表示,然后求和来做到这一点,而无需创建一个。datetime.timedeltanp.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 回答