У меня есть случайная величина 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
?