因此,我试图找出一种向量化计算的好方法,但我有些困惑。

| A | B (Calculation)      | B (Value) |
|---|----------------------|-----------|
| 1 |                      |           |
| 2 |                      |           |
| 3 |                      |           |
| 4 | =SUM(A1:A4)/4        | 2.5       |
| 5 | =(1/4)*A5 + (3/4)*B4 | 3.125     |
| 6 | =(1/4)*A6 + (3/4)*B5 | 3.84375   |
| 7 | =(1/4)*A7 + (3/4)*B6 | 4.6328125 |


我基本上是在尝试复制Wilder's Average True Range(不使用TA-Lib)。在我的简化示例中,列A是预先计算的True Range。

python-2.7 - Python中的加权累积和-LMLPHP

关于如何执行此操作而不循环的任何想法?分解等式实际上是加权的累加总和...但是,这绝对不是现有的熊猫累积允许开箱即用的东西。

最佳答案

这确实是一个ewm问题。问题是前四行挤在一起成为一行...然后ewm接管

a = df.A.values
d1 = pd.DataFrame(dict(A=np.append(a[:4].mean(), a[4:])), df.index[3:])
d1.ewm(adjust=False, alpha=.25).mean()

          A
3  2.500000
4  3.125000
5  3.843750
6  4.632812

07-24 09:19