给定参数
timestep = 2
window_size = 3
我已经展平了大小为 9 的时间序列向量。 内容是:
arr = np.array([1,2,3,4,5,6,7,8,9])
如何使用这些参数重塑/构造窗口时间序列?
我希望输出具有形状
unknown, window_size)
所以,它的输出将是这样的矩阵:
windowed_arr = np.array([
[1,2,3],
[3,4,5],
[5,6,7],
[7,8,9]
])
可以使用
np.lib.stride_tricks.sliding_window_view
函数以 Numpythonic 的方式构建窗口时间序列。
import numpy as np
timestep = 2
window_size = 3
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
windowed_arr = np.lib.stride_tricks.sliding_window_view(arr, window_size)[::timestep]
print(windowed_arr)
这将给出以下输出:
[[1 2 3]
[3 4 5]
[5 6 7]
[7 8 9]]
下面是如何工作的解释:
-
np.lib.stride_tricks.sliding_window_view(arr, window_size)
创建一个数组的滑动窗口视图,窗口大小为window_size
。此视图不复制数据,而是创建对原始数组的视图,使其具有良好的内存效率。 -
[::timestep]
对视图进行切片,以仅获取具有指定timestep
的窗口。这意味着它将每隔timestep
元素获取一个窗口。
此方法利用了高效的基于视图的操作,使其成为创建窗口时间序列的快速且内存友好的解决方案。
标签:python,numpy From: 78795812