【问题标题】:Convert variable from datetime.timedelta to numpy.timedelta64将变量从 datetime.timedelta 转换为 numpy.timedelta64
【发布时间】:2012-10-29 13:52:01
【问题描述】:

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

【问题讨论】:

    标签: numpy timedelta


    【解决方案1】:
    array([datetime.timedelta(1)], dtype="timedelta64[ms]")[0]
    

    This link 解释了很多关于datetime64timedelta64 的事情。 这也与将datetime.datetime 转换为datetime64 相关

    【讨论】:

      【解决方案2】:

      您可以在不创建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))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-21
        • 1970-01-01
        • 2016-05-16
        • 2017-01-09
        • 1970-01-01
        • 2020-02-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多