滑动窗口

sliding_windows(X: ndarray, window_size: int, stride: int = 1, axis: int = 1) tuple[ndarray, int][source]

创建时间序列的滑动窗口。

提取具有给定窗口大小和步长的时间序列的滑动窗口。窗口沿着时间序列的指定轴提取。如果时间序列是多变量的,每个窗口的通道沿着剩余的轴堆叠。

stride == 1 创建默认的滑动窗口,其中窗口每次移动一个时间点。如果 stride > 1,窗口将跳过一些时间点。如果 stride == window_size,窗口将不重叠,也称为滚动窗口。

如果时间序列长度减去窗口大小不能被步幅整除,最后一个窗口将不包括时间序列的最后几个时间点。未被窗口覆盖的时间点数量将作为填充长度返回。

对于一个具有10个时间点的时间序列,窗口大小为3,步长为2,该操作将创建以下四个窗口:

0 7 6 4 4 8 0 6 2 0 0 7 6

6 4 4
4 8 0

0 6 2

索引9(0)处的最后一个点没有被任何窗口覆盖。因此,填充长度为1。

Parameters:
Xnp.ndarray

单变量(1d)或多变量(2d)时间序列,形状为 (n_timepoints, n_channels)。

window_sizeint

滑动窗口的大小。

strideint, optional, default=1

滑动窗口的步幅。如果步幅大于1,窗口将跳过一些时间点。

axisint, optional, default=1

提取滑动窗口的轴。该轴必须是时间序列的时间轴。如果axis == 1,则假定X的形状为(n_channels, n_timepoints)。如果axis == 0,则假定X的形状为(n_timepoints, n_channels)。

Returns:
windowsnp.ndarray

时间序列的滑动窗口。返回的形状取决于axis参数。如果axis == 0,窗口的形状为(n_windows, window_size)(单变量)或(n_windows, window_size * n_channels)(多变量)。如果axis == 1,窗口的形状为(window_size, n_windows)(单变量)或(window_size * n_channels, n_windows)(多变量)。

padding_lengthint

未被窗口覆盖的时间点数量。对于步幅为1的情况,填充长度始终为0。

另请参阅

aeon.utils.windowing.reverse_windowing

时间序列的反向窗口化。

示例

>>> import numpy as np
>>> from aeon.utils.windowing import sliding_windows
>>> X = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> windows, _ = sliding_windows(X, window_size=4)
>>> print(windows)
[[ 1  2  3  4]
 [ 2  3  4  5]
 [ 3  4  5  6]
 [ 4  5  6  7]
 [ 5  6  7  8]
 [ 6  7  8  9]
 [ 7  8  9 10]]
>>> windows, padding = sliding_windows(X, window_size=4, stride=4)
>>> print(windows)
[[1 2 3 4]
 [5 6 7 8]]
>>> print(padding)
2