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.  ])