如何将变量从Python的datetime.timedelta
转换为numpy.timedelta64
?
答案 0 :(得分:4)
array([datetime.timedelta(1)], dtype="timedelta64[ms]")[0]
This link解释了有关datetime64
和timedelta64
的许多内容。
这也与将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))