【问题标题】:Using np.gradient with datetimes将 np.gradient 与日期时间一起使用
【发布时间】:2019-12-17 12:49:17
【问题描述】:

我正在尝试使用np.gradient 对时间求导,但np.gradient 在使用日期时间对象时会引发错误。我想使用np.gradient,因为它可以保持形状但不知道如何解决这个错误。

我无法在 3 小时内设置一个恒定的 dt,因为我的时间数据间隔不规则,而且我发现的唯一其他类似问题没有解决方案。下面是一些示例数据

import numpy as np
import datetime as dt


y = np.array([10.,12.,11.,15.,16.,20.])
times = np.array([dt.datetime(2019,10,1,12,3),dt.datetime(2019,10,1,12,40),dt.datetime(2019,10,1,14,5),
                  dt.datetime(2019,10,1,18,7),dt.datetime(2019,10,1,22,8),dt.datetime(2019,10,2,1,3)])

np.gradient(y,times)

输出应该是一个 d(y)/d(times) 的数组

【问题讨论】:

    标签: python python-3.x numpy datetime


    【解决方案1】:

    我们需要将times 转换为更简单的 dtype,numpy 可以更轻松地使用它。一种方法是先转换为datetime64[s],然后再转换为int64。一旦我们这样做了,我们就可以调用梯度。结果将以每秒为单位。

    time_seconds = times.astype('datetime64[s]').astype('int64')
    
    np.gradient(y, time_seconds)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 2011-10-22
      • 2021-08-31
      相关资源
      最近更新 更多