将 np.gradient 与日期时间一起使用

我正在尝试使用np.gradient关于时间的导数,但np.gradient在使用 datetime 对象时会引发错误。我想使用它,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) 的数组


紫衣仙女
浏览 130回答 1
1回答

波斯汪

我们需要转换times成更简单的 dtype,numpy 可以更轻松地使用它。一种方法是先转换为datetime64[s],然后再转换为int64. 一旦我们这样做了,我们就可以调用梯度。结果将以每秒为单位。time_seconds = times.astype('datetime64[s]').astype('int64')np.gradient(y, time_seconds)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python