如何将变量从Python的datetime.timedelta转换为numpy.timedelta64
发布于 2012-10-29 21:53:48
array([datetime.timedelta(1)], dtype="timedelta64[ms]")[0]This link解释了许多关于datetime64和timedelta64的事情。这也适用于将datetime.datetime转换为datetime64
发布于 2019-05-25 04:37:21
您可以在不创建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))https://stackoverflow.com/questions/13122960
复制相似问题