【发布时间】:2014-01-19 06:23:58
【问题描述】:
我编写了代码来计算数组 y 在周期 p 中每个元素的平均值
import numpy as np
p=4
y =np.asarray([146, 96, 59, 133, 192, 127, 79, 186, 272, 155, 98, 219])
c=len(y)/p
print c
a=[]
for i in range(1,c+1):
s=y[p*(i-1):p*i]/np.mean(y[p*(i-1):p*i])
a = np.append(a, s)
print a
b=[]
for i in range(c+1):
s = np.mean(a[i::p])
b = np.append(b, s)
print b
有没有比使用 append 和 for 循环更有效的方法来做到这一点?我不需要两个数组只是 b
【问题讨论】:
-
要摆脱附加,使用 np.zeros(shape) 分配两个整数数组,然后分配给相关索引,您应该会看到性能提升。另外,这个脚本的最终目标是什么?这可能会帮助我们帮助您...
-
可能,第二个范围也应该在
range(p)中,因为您迭代模 p:a[i::p]。我更新了答案,最后一个结果等于你的预期 b,但比你的预期长一个,因为 c=3 但 p=4。 -
@MadisonMay 添加 Holt-Winters 指数平滑,用于计算季节
-
@user3084006 在我的回答中查看更新
-
@alko 这就是我正在做的事情。但是对于 Statsmodel。我用所有的乘法模型和阻尼变化得到了所有的双重和单一的。我会在完成三重和预测带后提交。