2016-05-04 11 views
0

I haben die folgende Schleife in einer Funktionsdefinition:Python ndarray Aktualisierungsfunktion verlass

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 

Nach Richtung Ende des Zyklus erreicht (t = T-1), der Code dieser Funktion beendet, ohne es durch die Ausführung. Wenn ich jedoch versuche, zu debuggen, wenn ich manuell (in pycharm Debug-Konsole) versuche, mu [t + 1] = mu_post [t] zu tun, funktioniert es gut. Könnte es einen Grund dafür geben? BTW, ich habe versucht, mu [t + 1] [:] = mu_post [t], aber es hat das gleiche Problem.

Antwort

0

Der Code beendet diese Funktion, ohne sie auszuführen.

das ist vage, aber ich vermute ich damit den Fehler reproduzieren kann:

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 

Bei der letzten Iteration t==4, so t+15 ist. Das ist ein zu großer Index für die 1. Dimension von mu.

Warum indizieren Sie mu mit t+1? Und wenn das Sinn macht, warum ist mu die gleiche Größe wie mu1?

Verwandte Themen