我正在嘗試使用np.gradient關(guān)于時(shí)間的導(dǎo)數(shù),但np.gradient在使用 datetime 對象時(shí)會引發(fā)錯誤。我想使用它,np.gradient因?yàn)樗梢员4嫘螤?,但不知道如何解決這個(gè)錯誤。我無法在 3 小時(shí)內(nèi)設(shè)置一個(gè)恒定的 dt,因?yàn)槲业臅r(shí)間數(shù)據(jù)間隔不規(guī)則,而我發(fā)現(xiàn)的唯一其他類似問題沒有解決方案。下面是一些示例數(shù)據(jù)import numpy as npimport datetime as dty = 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)輸出應(yīng)該是 d(y)/d(times) 的數(shù)組
1 回答
波斯汪
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
我們需要轉(zhuǎn)換times成更簡單的 dtype,numpy 可以更輕松地使用它。一種方法是先轉(zhuǎn)換為datetime64[s],然后再轉(zhuǎn)換為int64. 一旦我們這樣做了,我們就可以調(diào)用梯度。結(jié)果將以每秒為單位。
time_seconds = times.astype('datetime64[s]').astype('int64')
np.gradient(y, time_seconds)
添加回答
舉報(bào)
0/150
提交
取消
