Der Weg, diese Dinge schnell zu tun, ist die Verwendung der integrierten Funktionen und Operatoren von Numpy, um die Operationen auszuführen. Numpy wird intern mit optimiertem C-Code implementiert und wenn Sie Ihre Berechnung richtig einrichten, wird es viel schneller laufen.
Effektive Nutzung von Numpy kann jedoch manchmal schwierig sein. Es wird "Vektorisieren" Ihres Codes genannt - Sie müssen herausfinden, wie Sie es auf eine Weise ausdrücken können, die auf ganze Arrays und nicht auf explizite Schleifen wirkt.
Zum Beispiel in der Schleife Sie p[i] * T_n[j][i]
haben, die meine Meinung nach kann mit einer Vektor-by-Matrix-Multiplikation durchgeführt werden: wenn v 6x6 1x6 und m ist dann v.dot(m)
1x6, die Skalarprodukte v
mit den Spalten von m
berechnet . Sie können Transpositionen und Umformungen verwenden, um bei Bedarf in verschiedenen Dimensionen zu arbeiten.
Gibt es einen Grund, warum Sie wollen, dass 'T_n' eine Liste von Listen statt einer numpigen Matrix ist? – SethMMorton
Können Sie bitte einige Beispieldaten für TT, p, F und T_n angeben. Dann wäre dies ein funktionierendes Beispiel, das einfach getestet werden kann (natürlich können wir eigene Zufallsmatrizen erstellen, aber andersherum wäre Ihr Code ein ausführbares Programm zum Kopieren und Einfügen (wenn Sie auch Importe mit einschließen ...) – MichaelA
Sie können Fragen Sie auch nach [Code Review] (http://codereview.stackexchange.com/) – Wondercricket