将变量从datetime.timedelta转换为numpy.timedelta64

时间:2012-10-29 13:52:01

标签: numpy timedelta

如何将变量从Python的datetime.timedelta转换为numpy.timedelta64

2 个答案:

答案 0 :(得分:4)

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

This link解释了有关datetime64timedelta64的许多内容。 这也与将datetime.datetime转换为datetime64

相关

答案 1 :(得分:0)

您可以通过将np.array(天,秒和微秒)中的基本整数表示形式映射到相应的datetime.timedelta表示形式,然后进行求和,而无需创建np.timedelta64

此方法的缺点是,虽然您将获得相同的增量持续时间,但您并不一定总是获得相同的单位。这种方法的好处是,如果要转换单个值而不是大的值数组,通常将比创建数组快。

您也可以只用np.timedelta64()来调用datetime.timedelta,但是这种方法只会返回以微秒为单位的np.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))