所以我试图找出一种矢量化计算的好方法,而且我有点卡住了。
| 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。
有关如何在不循环的情况下执行此操作的任何想法?打破这个等式,它实际上是一个加权的累积总和......但它绝对不是现有的大熊猫口袋允许开箱即用的东西。
答案 0 :(得分:5)
这确实是一个ewm
问题。问题是前4行被挤在一起......然后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