我有一个随机变量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.size==X.size
时才能接受数组T
。
是否有其他方法可以尝试将时间序列T,X
重新采样为宽度为dt
的均匀间隔?
linspace
应该改成arange
! - kevinkayaksnp.arange()
是正确的函数。 - Tom Johnson