首页 > 编程问答 >Numpythonic 方式从所需的时间步长和窗口大小构造窗口向量

Numpythonic 方式从所需的时间步长和窗口大小构造窗口向量

时间:2024-07-26 08:15:54浏览次数:15  
标签:python numpy

给定参数

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

下面是如何工作的解释:

  1. np.lib.stride_tricks.sliding_window_view(arr, window_size) 创建一个数组的滑动窗口视图,窗口大小为 window_size 。此视图不复制数据,而是创建对原始数组的视图,使其具有良好的内存效率。
  2. [::timestep] 对视图进行切片,以仅获取具有指定 timestep 的窗口。这意味着它将每隔 timestep 元素获取一个窗口。

此方法利用了高效的基于视图的操作,使其成为创建窗口时间序列的快速且内存友好的解决方案。

标签:python,numpy
From: 78795812

相关文章