Betrachten Sie eine sehr einfache Monte-Carlo-Simulation einer geraden Linie y = m * x + b
, z. Um den Effekt der Unsicherheit in den Parametern m
und b
zu visualisieren. m
und b
werden beide aus einer Normalverteilung entnommen. Ausgehend von einem MATLAB-Hintergrund würde ich dies als
Dies erzeugt die gewünschte Ausgabe, aber ich habe das Gefühl, dass es einen "pythonischen" Weg geben muss, dies zu tun. Liege ich falsch? Wenn nicht, könnte mir jemand ein Code-Beispiel dafür geben, wie man das effizienter macht?
Um ein Beispiel zu geben, nach dem ich suche: In MATLAB könnte dies einfach ohne die Schleife mit bsxfun()
geschrieben werden. Gibt es in Python etwas Ähnliches oder vielleicht sogar ein Paket für solche Dinge?
Sie können numpy array broadcasting verwenden, um das Array y
in einem zu erstellen Schritt wie unten gezeigt.
x[:, np.newaxis]
erzwingt x
, um ein Spaltenvektor der Form (50, 1)
zu werden, im Gegensatz zu (50,)
, was bedeutet, dass die Übertragung funktioniert.
Sie können dann direkt über das numpy-Array iterieren (statt über dessen Index zu iterieren), aber Sie müssen das Array transponieren (mit y.transpose()
), sonst erhalten Sie für jede Iteration den x-Wert für jeweils 1000 Zufallszahlen .
Tags und Links python random numpy montecarlo