我正在尋找一種方法來計算三維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