Python Numpy二维移动平均线

Python Numpy二维移动平均线,python,numpy,moving-average,Python,Numpy,Moving Average,我有一个2d numpy数组。我想取每个条目最近的n个条目的平均值,就像在一维数组上取滑动平均值一样。最干净的方法是什么?这与将过滤器应用于图像类似 幸运的是,它有一系列函数来实现这一点。你要找的人是 可以这样使用: a => array([[ 0., 1., 2., 3., 4.], [ 5., 6., 7., 8., 9.], [ 10., 11., 12., 13., 14.], [ 15.,

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

这与将过滤器应用于图像类似

幸运的是,它有一系列函数来实现这一点。你要找的人是

可以这样使用:

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
模式
选项控制如何处理边。您没有指定要如何处理边。在本例中,“常量”模式意味着它将数组边界之外的每个项视为0的常量值(0是默认值,可以重写)。

如何定义“n个最近的条目”?这是一个以当前条目为中心的正方形区域吗(例如5x5)?@PeterGibson,这会很好——该区域的确切形状对我的用例并不重要。谢谢,但是链接的文档有点稀疏。如果我的图像被称为
img
,并且我想计算每个像素周围5x5网格的平均值,那么我将使用什么样的确切调用?这很糟糕,你不能为每个轴指定不同的
模式。或者,等等,我想那是行不通的。