Python 三维阵列中一个轴上的滚动平均值
是否有一种简单的方法来计算3D阵列中一个轴上的滚动平均值?假设我有一个带有x,y和时间轴的数组,我想要所有x和y在时间轴上的滚动平均值。 对于1D阵列,我使用熊猫: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)
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阵列。熊猫系列是一维的。改用数据帧