滑动窗口¶
- 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