函数定义中有以下循环:
mu=np.zeros((T,p))
mu_post=np.zeros((T,p))
for t in arange(T):
mu_post[t]= np.dot(a,b)
mu[t+1]= mu_post[t]
some other processing
在接近周期结束(t=t-1)后,代码退出该函数,而不执行。然而,在尝试调试时,如果我手动(在pycharm调试控制台中)尝试执行mu[t+1]=mu_post[t],则效果良好。这有什么原因吗。顺便说一句,我试着做mu[t+1][:]=mu_post[t],但它也有同样的问题。
代码退出此函数而不执行。
这是模糊的,但我怀疑我可以用这个重现错误:
In [47]: mu=np.zeros((5,3))
In [48]: mu1=np.zeros((5,3))
In [49]: for t in range(5):
....: mu1[t,:]=[1,2,3]
....: mu[t+1,:] = mu1[t]
----> 3 mu[t+1,:] = mu1[t]
IndexError: index 5 is out of bounds for axis 0 with size 5
在最后一次迭代中,t==4
,所以t+1
就是5
。这对于mu
的第一维度来说是太大的索引。
为什么要用t+1
索引mu
?如果这是有道理的,为什么mu
和mu1
的大小相同?