我有一个随机变量X
,在随机时间T
采样,类似于这个玩具数据:
import numpy as np
T = np.random.exponential(size=1000).cumsum()
X = np.random.normal(size=1000)
此时间序列如下所示:
关键的一点是采样间隔是不均匀的:我的意思是np.diff(T)
的所有元素不相等。我需要以指定的宽度dt
在均匀间隔上对时间序列T,X
进行重采样,这意味着(np.diff(T)==dt).all()
应该返回True
。
我可以使用scipy.interpolate.interp1d
以统一的时间间隔对时间序列进行重新采样,但是这个方法不允许我指定时间间隔大小dt
:
from scipy.interpolate import interp1d
T = np.linspace(T.min(),T.max(),T.size) # same range and size with a uniform interval
F = interp1d(T,X,fill_value='extrapolate') # resample the series on uniform interval
X = F(T) # Now it's resampled.
基本问题是interp1d
不接受数组T
,除非T.size==X.size
。
是否有其他方法可以尝试在宽度为dt
的均匀间隔上对时间序列T,X
进行重采样?
2条答案
按热度按时间enyaitl31#
juzqafwq2#
这对我很有帮助。但是请注意,这行
不正确。它应该是:'
或者(在我的例子中更有用):