python中numpy如何实现rolling滚动-创新互联

小编这次要给大家分享的是python中numpy如何实现rolling滚动,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

创新互联建站是一家专业提供新沂企业网站建设,专注与成都网站设计、成都网站制作、HTML5、小程序制作等业务。10年已为新沂众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

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

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

import numpy as np
data = np.arange(20)
def rolling_window(a, window):
  shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
  strides = a.strides + (a.strides[-1],)
  return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)

rolling_window(data,10)
Out[12]: 
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
    [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
    [ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
    [ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
    [ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
    [ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
    [ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
    [ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],
    [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]])

np.mean(rolling_window(data,10))
Out[13]: 9.5

np.mean(rolling_window(data,10),-1)
Out[14]: array([ 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5])

分享题目:python中numpy如何实现rolling滚动-创新互联
标题路径:http://abwzjs.com/article/ccgoes.html