reverse_windowing¶
- reverse_windowing(y: ~numpy.ndarray, window_size: int, reduction: ~typing.Callable[[...], ~numpy.ndarray] = <function nanmean>, stride: int = 1, padding_length: int | None = None, force_iterative: bool = False) ndarray[source]¶
为原始时间序列的每个点聚合窗口化结果。
反向窗口操作是滑动窗口的逆操作。它为原始时间序列的每个点聚合窗口化的结果。聚合是通过一个归约函数执行的,例如np.nanmean、np.nanmedian或np.nanmax。需要一个忽略NaN值的聚合函数来处理填充。
生成的时间序列与原始时间序列具有相同的长度,即 n_timepoints = (n_windows - 1) * stride + window_size + padding_length。
对于一个长度为10的时间序列,窗口大小为3,步长为2,共有四个窗口。假设以下结果作为此函数的输入y = np.array([1, 4, 8, 2]),示例展示了使用np.nanmean归约函数对窗口结果进行聚合的过程:
- mapped = 1 1 2.5 4 6 8 5 2 2 0
y[0] = 1 1 1 y[1] = 4 4 4 y[2] = 8 8 8 y[3] = 2 2 2
- Parameters:
- ynp.ndarray
窗口化结果的数组,形状为 (n_windows,)。
- window_sizeint
滑动窗口的大小。
- reductioncallable, optional, default=np.nanmean
用于聚合窗口结果的归约函数。该函数必须接受一个轴参数,以指定应用归约的轴。需要忽略NaN值以处理边缘的填充。
- strideint, optional, default=1
滑动窗口的步幅。如果步幅大于1,窗口会跳过一些时间点。如果步幅不等于1,必须同时提供
padding_length。- padding_lengthint, optional
时间序列末尾未被任何窗口覆盖的时间点数量。如果
stride不为1,则必须提供。- force_iterativebool, optional, default=False
强制使用迭代反向窗口函数以限制内存使用。如果为False,该函数将根据可用内存选择最高效的反向窗口函数,在内存使用和速度之间进行权衡。
- Returns:
- mappednp.ndarray
映射结果的数组,形状为 (n_timepoints,)。映射结果是原始时间序列每个点的聚合窗口结果。
示例
>>> import numpy as np >>> from aeon.utils.windowing import sliding_windows, reverse_windowing >>> X = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) >>> windows, padding_length = sliding_windows(X, window_size=3, stride=2) >>> y = np.array([0.5, 0.6, 0.5, 0.8]) >>> reverse_windowing(y, window_size=3, stride=2, padding_length=padding_length) array([0.5 , 0.5 , 0.55, 0.6 , 0.55, 0.5 , 0.65, 0.8 , 0.8 , 0. ])