numpy二维移动平均线

发布于 2021-01-29 19:19:35

我有一个二维的numpy数组。我想对每个条目取n个最近条目的平均值,就像对一维数组取滑动平均值一样。什么是最干净的方法?

关注者
0
被浏览
229
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这与将 滤镜 应用于 图像的 概念类似。

    幸运的是,scipy.ndimage.filters有很多功能可以做到这一点。您所追求的是scipy.ndimage.uniform_filter

    可以这样使用:

    a
    => 
    array([[  0.,   1.,   2.,   3.,   4.],
           [  5.,   6.,   7.,   8.,   9.],
           [ 10.,  11.,  12.,  13.,  14.],
           [ 15.,  16.,  17.,  18.,  19.],
           [ 20.,  21.,  22.,  23.,  24.]])
    
    uniform_filter(a, size=3, mode='constant')
    => 
    array([[  1.33333333,   2.33333333,   3.        ,   3.66666667,          2.66666667],
           [  3.66666667,   6.        ,   7.        ,   8.        ,          5.66666667],
           [  7.        ,  11.        ,  12.        ,  13.        ,          9.        ],
           [ 10.33333333,  16.        ,  17.        ,  18.        ,         12.33333333],
           [  8.        ,  12.33333333,  13.        ,  13.66666667,          9.33333333]])
    

    如果您需要5x5滤镜,请使用size=5。该mode选项控制如何处理边缘。您没有指定要如何处理边缘。在此示例中,“常量”模式表示将数组边界之外的每个项目都视为常量值0(默认值为0,可以覆盖此默认值)。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看