【发布时间】:2012-10-29 13:52:01
【问题描述】:
如何将变量从 Python 的 datetime.timedelta 转换为 numpy.timedelta64?
【问题讨论】:
如何将变量从 Python 的 datetime.timedelta 转换为 numpy.timedelta64?
【问题讨论】:
array([datetime.timedelta(1)], dtype="timedelta64[ms]")[0]
This link 解释了很多关于datetime64 和timedelta64 的事情。
这也与将datetime.datetime 转换为datetime64 相关
【讨论】:
您可以在不创建np.array 的情况下执行此操作,方法是将datetime.timedelta(天、秒和微秒)中的基本整数表示映射到相应的np.timedelta64 表示,然后求和。
这种方法的缺点是,虽然您将获得相同的增量持续时间,但您不会总是获得相同的单位。这种方法的好处是,如果您要转换单个值而不是大型值数组,它通常会比创建数组更快。
您也可以只使用datetime.timedelta 调用np.timedelta64(),但该方法仅返回具有微秒单位的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))
【讨论】: