为 pandas 滚动平均值制作自定义 window 类型

Making a custom window type for pandas rolling mean

我知道滚动允许您指定用于计算滚动平均值的 window 类型。文档列出了各种可用的 windows 类型选项 here。但是,我正在尝试使用长度为 4 的对称加权 window 类型,其定义类似于(并且不作为内置提供):

(a + 2*b + 2*c + d)/6

其中 a、b、c 和 d 是在任何给定时间滚动 window 的四个元素,而 [1/6、2/6、2/6、1/6] 将是相关权重。

如果我默认使用 window 类型 (boxcar),我会得到:

import pandas as pd
rs = pd.Series(range(10))
print rs.rolling(4, win_type = 'boxcar').mean()

0    NaN
1    NaN
2    NaN
3    1.5
4    2.5
5    3.5
6    4.5
7    5.5
8    6.5
9    7.5
dtype: float64

知道如何使用自定义滚动 window 类型(在本例中为对称加权移动平均线)吗?

像这样创建一个内核:

import numpy as np
kernel = np.array([1,2,2,1])/6

然后与你的系列进行卷积:

np.convolve(rs,kernel,'same')