我在列表中有一些事件时间,我想绘制它们的指数加权移动平均值。我可以使用以下代码执行此操作。
import numpy as np
import matplotlib.pyplot as plt
print "Code runnning"
a=0.01
l = [3.0,7.0,10.0,20.0,200.0]
y = np.zeros(1000)
for item in l:
y[item]=1
s = np.zeros(1000)
x = np.linspace(0,1000,1000)
for i in xrange(1000):
s[i] = a*y[i-1]+(1-a)*s[i-1]
plt.plot(x, s)
plt.show()
然而,这显然是一种使用 python 的可怕方式。这样做的正确方法是什么?是否可以在不制作所有这些额外的稀疏数组的情况下做到这一点?
输出应如下所示。