如何用Python和Numpy实现rolling窗口的案例应用?

2026-05-25 03:450阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1250个文字,预计阅读时间需要5分钟。

如何用Python和Numpy实现rolling窗口的案例应用?

与pandas和numpy相比,虽然numpy没有直接的rolling方法,但可以通过一个技巧在C代码内部执行这种循环。这是通过添加一个与窗口大小相同的额外维度和适当的步长来实现的。例如:pythonimport numpy as np

def numpy_rolling(data, window_size, step_size): # 创建额外的维度 extra_dim=np.arange(window_size) # 扩展数据维度 expanded_data=np.expand_dims(data, axis=-1) # 创建步长数组 strides=np.array([step_size, 1, 1]) # 使用np.lib.stride_tricks.as_strided创建滚动窗口 rolled_data=np.lib.stride_tricks.as_strided( expanded_data, shape=(expanded_data.shape[0] - window_size + 1, window_size), strides=strides ) return rolled_data

相比较pandas,numpy并没有很直接的rolling方法,但是numpy 有一个技巧可以让NumPy在C代码内部执行这种循环。

这是通过添加一个与窗口大小相同的额外尺寸和适当的步幅来实现的。

阅读全文

本文共计1250个文字,预计阅读时间需要5分钟。

如何用Python和Numpy实现rolling窗口的案例应用?

与pandas和numpy相比,虽然numpy没有直接的rolling方法,但可以通过一个技巧在C代码内部执行这种循环。这是通过添加一个与窗口大小相同的额外维度和适当的步长来实现的。例如:pythonimport numpy as np

def numpy_rolling(data, window_size, step_size): # 创建额外的维度 extra_dim=np.arange(window_size) # 扩展数据维度 expanded_data=np.expand_dims(data, axis=-1) # 创建步长数组 strides=np.array([step_size, 1, 1]) # 使用np.lib.stride_tricks.as_strided创建滚动窗口 rolled_data=np.lib.stride_tricks.as_strided( expanded_data, shape=(expanded_data.shape[0] - window_size + 1, window_size), strides=strides ) return rolled_data

相比较pandas,numpy并没有很直接的rolling方法,但是numpy 有一个技巧可以让NumPy在C代码内部执行这种循环。

这是通过添加一个与窗口大小相同的额外尺寸和适当的步幅来实现的。

阅读全文