如何在python上调整时间序列数据的大小

如何在python上调整时间序列数据的大小,python,deep-learning,resize,scikit-image,Python,Deep Learning,Resize,Scikit Image,我正试图深入学习时间序列数据 每个数据有12个特征,但每个系列数据的数据量不同 有些形状是[48,12],有些是[54,12],我试图将它们调整为[50,12] 到目前为止,我只知道在skimage.transform中使用resize,但我不知道它是否有效 有没有其他解决办法 例如,数据中的一个特性如下所示。 形状是[55,1],我想把它改成[50,1] a = np.array[-5.529309, -4.6293, -3.068647, -4.897388, -4.39951, -4

我正试图深入学习时间序列数据

每个数据有12个特征,但每个系列数据的数据量不同

有些形状是[48,12],有些是[54,12],我试图将它们调整为[50,12]

到目前为止,我只知道在
skimage.transform
中使用resize,但我不知道它是否有效

有没有其他解决办法

例如,数据中的一个特性如下所示。 形状是[55,1],我想把它改成[50,1]

a = np.array[-5.529309, -4.6293,   -3.068647, -4.897388, -4.39951,  -4.753769, -3.729291,
 -4.973984, -5.060155, -4.686748, -4.696322, -3.939932, -3.470778, -6.209103,
 -5.586756, -4.466532, -3.193116, -5.337818, -5.596331, -4.006954, -3.499502,
 -3.413331, -6.304848, -4.322914, -4.246317, -5.759098, -5.893142, -6.381444,
 -4.52398,  -4.198445, -5.634629, -6.276124, -5.17505,  -4.322914, -4.198445,
 -4.600576, -4.39951,  -4.945261, -5.759098, -4.677173, -3.623971, -5.692076,
 -6.563361, -5.462287, -4.868664, -5.941015, -6.400594, -5.692076, -4.591002,
 -6.027186, -5.960164, -6.256975, -5.414414, -5.730374, -6.726129]
如果我使用resize,数据将如下所示

调整大小之前和之后:


一个选择是在tslearn中使用TimeSeriesSampler。这将通过(线性)插值重新采样数据,将给定时间序列的大小调整为指定的固定大小。

例如:

from tslearn.preprocessing import TimeSeriesResampler
ts = np.arange(5)
new_ts = TimeSeriesResampler(sz=9).fit_transform(ts)
final_ts = np.squeeze(new_ts)
print(ts)   # [0 1 2 3 4]
print(new_ts)  # [[[0. ] [0.5] [1. ] [1.5] [2. ] [2.5] [3. ] [3.5] [4. ]]]
print(final_ts)  # [0. 0.5 1. 1.5 2. 2.5 3. 3.5 4.]

您需要知道数据上的时间轴是什么。如果每个序列的长度为12小时,但时间点的数量不同,那么skimage.transform.resize就可以了。但是,如果每个时间序列都是针对不同的小时数每小时采样的数据,那么您需要截断到最短的序列,或者外推较短的序列。