加权滚动平均值尚未在xarray中实现。
下面的代码几乎可以做同样的事情,但是会很慢。我认为使用np.convolve是当前的最佳选择。
def weighted_sum(x, axis): weight = [1, 2, 1] if x.shape[axis] == 3: return np.sum(x * weight, axis=axis) else: return np.nanda.rolling(dim_0=3, center=True).reduce(weighted_sum)
当前,我们正在努力支持更灵活(和更快)的滚动操作。参见https://github.com/pydata/xarray/pull/1837
编辑:
使用xarray = 0.10.2时,加权滚动平均值可以如下计算:
weight = xr.DataArray([0.25, 0.5, 0.25], dims=['window'])da.rolling(dim_0=3, center=True).construct('window').dot(weight)where
construct方法构造滚动对象的视图,其中窗口尺寸(
window在上面的示例中命名)被附加到最后一个位置。权重数组的内部乘积给出沿窗口维度的加权和。



