我有一个时间序列需要递归处理以获得时间序列结果(res).这是我的示例代码:
res=s.copy()*0
res[1]=k # k is a constant
for i in range(2,len(s)):
res[i]=c1*(s[i]+s[i-1])/2 +c2*res[i-1]+c3*res[i-2]
Run Code Online (Sandbox Code Playgroud)
其中c1,c2,c3是常数.它工作正常,但我想使用矢量化,我试过:
res[2:]=c1*(s[2:]+s[1:-1])/2+c2*res[1:-1]+c3*res[0:-2]
Run Code Online (Sandbox Code Playgroud)
但我得到"ValueError:
如果我试着, 操作数不能与形状(1016)(1018)一起广播"
res=c1*(s[2:]+s[1:-1])/2+c2*res[1:-1]+c3*res[0:-2]
Run Code Online (Sandbox Code Playgroud)
没有给出任何错误,但是我得不到正确的结果,因为必须在计算发生之前初始化res [0]和res [1].有没有办法用矢量化处理它?
任何帮助将不胜感激,谢谢!