以numpy/scipy为单位在均匀间隔上对时间序列重新采样?

以numpy/scipy为单位在均匀间隔上对时间序列重新采样?,numpy,scipy,Numpy,Scipy,我有一个随机变量X在随机时间T采样,类似于这个玩具数据: import numpy as np T = np.random.exponential(size=1000).cumsum() X = np.random.normal(size=1000) 此时间序列如下所示: 一个关键点是采样间隔是非均匀的:我的意思是np.diff(T)的所有元素都不相等。我需要以指定的宽度对时间序列T,X进行重新采样dt,意思是(np.diff(T)=dt)。all()应返回True 我可以使用scipy.i

我有一个随机变量
X
在随机时间
T
采样,类似于这个玩具数据:

import numpy as np
T = np.random.exponential(size=1000).cumsum()
X = np.random.normal(size=1000)
此时间序列如下所示:

一个关键点是采样间隔是非均匀的:我的意思是
np.diff(T)
的所有元素都不相等。我需要以指定的宽度对时间序列
T,X
进行重新采样
dt
,意思是
(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


有没有另一种方法我可以试着对时间序列
T,X
在宽度
dt
的均匀间隔上重新采样?

哦,是的,当然。哈哈,谢谢!然而,我认为
linspace
应该是
arange
dt = ...
from scipy.interpolate import interp1d   
Told = np.arange(T.min(),T.max(),T.size)
F = interp1d(Told,X,fill_value='extrapolate') 
Tnew = np.linspace(T.min(), T.max(), dt)
Xnew = F(Tnew)