我正在寻找一种方法来计算三维Numpy数组中每个给定值的均值,其中20个值直接位于上方,20个值位于正下方的行中。这与我之前提出的一个问题类似(Taking minimum value of each entry +- 10 rows either side in numpy array),但计算41个值的平均值而不是21个值的最小值。如何高效地计算python中的移动平均值
我尝试过使用Scipy's uniform 1d filter,但是它没有正确处理接近数组边缘的值的模式。阵列外部的窗口不应包括在平均值计算中(即在阵列的底部/顶部位置,平均值应取自边缘值和分别在上面/下面的20行)。
有没有使用均匀过滤器的方法,或者是否有其他方法可以实现这一点?
谢谢。
编辑: Numpy数组的尺寸为20x3200x18,所以我正在寻找一个相对有效的解决方案。
感谢丹尼尔。我应该提到阵列很大(20x3200x18),所以我不确定旋转运算对我来说是最好的解决方案。 – JGraham353
对于大型数组,'scipy.signal.fftconvolve'更快。请注意,此函数执行循环卷积运算,这将使您在边缘处出现与“scipy.signal.convolve”不同的行为。 – Michael