Python 三维阵列中一个轴上的滚动平均值

Python 三维阵列中一个轴上的滚动平均值,python,arrays,pandas,numpy,Python,Arrays,Pandas,Numpy,是否有一种简单的方法来计算3D阵列中一个轴上的滚动平均值?假设我有一个带有x,y和时间轴的数组,我想要所有x和y在时间轴上的滚动平均值。 对于1D阵列,我使用熊猫: import pandas as pd rolling_array = pd.Series(array).rolling(window=window).mean() 但这不适用于多维数据 编辑: 我的数组如下所示: import numpy as np array = np.random.rand(100,100,200)

是否有一种简单的方法来计算3D阵列中一个轴上的滚动平均值?假设我有一个带有x,y和时间轴的数组,我想要所有x和y在时间轴上的滚动平均值。 对于1D阵列,我使用熊猫:

import pandas as pd 

rolling_array = pd.Series(array).rolling(window=window).mean()
但这不适用于多维数据

编辑:

我的数组如下所示:

import numpy as np 

array = np.random.rand(100,100,200) 
我想要轴=2的滚动平均值,我们可以用它来接受轴,我们将使它成为一个通用的,沿着通用轴接受任何n-dim数组-

from scipy.ndimage import uniform_filter1d

def rolling_mean_along_axis(a, W, axis=-1):
    # a : Input ndarray
    # W : Window size
    # axis : Axis along which we will apply rolling/sliding mean
    hW = W//2
    L = a.shape[axis]-W+1   
    indexer = [slice(None) for _ in range(a.ndim)]
    indexer[axis] = slice(hW,hW+L)
    return uniform_filter1d(a,W,axis=axis)[tuple(indexer)]
验证形状的示例运行:

In [70]: a = np.random.rand(10,10,10)

In [72]: rolling_mean_along_axis(a, W=5, axis=0).shape
Out[72]: (6, 10, 10)

In [73]: rolling_mean_along_axis(a, W=5, axis=1).shape
Out[73]: (10, 6, 10)

In [74]: rolling_mean_along_axis(a, W=5, axis=2).shape
Out[74]: (10, 10, 6)

@Divakar是
np。意思是
可以滚动窗口?哦,它不是。我错过了。均匀过滤器怎么样?@HansHirse我有一个numpy 3D阵列,每个x和y坐标以及每个时间步长都有降水值,所以它实际上是一个3D阵列。熊猫系列是一维的。改用数据帧