Ich habe eine Summierung über 2 Indizes in einer 2D-Ebene und an jedem Punkt im Raum muss ich einen Wert einer Funktion erhalten.Mein Python-Programm effizienter machen
Der einfachste Weg und der einzige Weg, ich weiß, wie es geht, war mit 4 für Schleifen. Es funktioniert gut, aber es ist sehr langsam. Hast du irgendwelche Vorschläge, wie es schneller geht?
Beachten Sie, dass "size" den Schritt definiert, den ich verwende, und die Größe meines Systems in willkürlichen Einheiten ist und "n_0" eine Liste von Listen ist und ein Eingabeparameter ist, der auch von den Koordinaten x in y abhängig ist.
EDIT: Ich weiß nicht, warum das ein Duplikat markiert wurde, weil mein Problem mit meiner Syntax nicht prägnanter ist. Mein Problem ist, dass der Code, egal was die Syntax ist, ist O (n^4) und ich muss das reduzieren.
einfach einige Zeit in Anspruch nehmen, um zu bestätigen, außer Betracht lassen Sie alle Koordinaten _outside_ Ihre Koordinaten System mit der Koordinate 'in range (size)' checks? Auch, was ist "N" definiert? –
Es kann nicht viel helfen, aber sollte math.hypot statt quadrieren und berechnen Quadratwurzel manuell. – guidot
Wie groß ist die typische "Größe"? Ich würde vorschlagen, numpy zu verwenden, da es erlaubt, die Berechnungen schneller durchzuführen, aber es würde erfordern, Vektoren im Gedächtnis zu speichern –