我有一个二维的numpy数组。我想对每个条目取n个最近条目的平均值,就像对一维数组取滑动平均值一样。什么是最干净的方法?
这与将 滤镜 应用于 图像的 概念类似。
幸运的是,scipy.ndimage.filters有很多功能可以做到这一点。您所追求的是scipy.ndimage.uniform_filter。
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,可以覆盖此默认值)。
size=5
mode