Potenzierung in Python - soll ich lieber Operator statt und Stack-Überlauf

Diese Frage hat bereits eine Antwort hier:

In meinem Bereich ist es sehr häufig einige Zahlen zu quadrieren, arbeiten sie zusammen, und die Quadratwurzel des Ergebnisses nehmen. Dies wird in Satz des Pythagoras und die RMS-Berechnung durchgeführt, zum Beispiel.







In numpy, habe ich folgendes getan:

Und in reinem Python so etwas wie dies zu erwarten:

Allerdings habe ich schon diese reine Python-Form verwendet wird, da ich es viel kompakter, Import unabhängig und scheinbar äquivalent zu finden:

Ich habe einige Leute argumentieren gehört, dass die ** Operator Art von Hack ist, und dass eine Reihe quadrieren, indem sie es um 0,5 Potenzieren ist nicht so lesbar. Aber was ich möchte, ist fragen, wenn:







„Gibt es einen Grund RECHNERISCHE die ersten beiden Alternativen über die dritte (n) zu bevorzugen?“

Danke fürs Lesen!

fragte 23. September '13 um 17:40 Uhr

Diese Frage wurde vor gefragt und hat bereits eine Antwort. Wenn diese Antworten nicht vollständig Ihre Frage beantworten, wählen Sie bitte eine neue Frage stellen.

Auch in Basis Python können Sie die Berechnung in generischer Form tun

x ** 2 ist sicherlich nicht ein Hack und die durchgeführte Berechnung ist das gleiche (I mit CPython Quellcode geprüft). Ich finde es eigentlich besser lesbar (und Lesbarkeit zählt).

stattdessen x ** 0,5 Unter Verwendung die Quadratwurzel nimmt nicht exakt die gleichen Berechnungen wie math.sqrt wie die ehemaligen tun (wahrscheinlich) berechnet unter Verwendung von Logarithmen und dieser (wahrscheinlich) die spezifischen numerischen Anweisung des Mathe-Prozessors.

Ich verwende oft x ** 0,5, nur weil ich nicht will, Mathe fügen Sie einfach dafür. Ich würde erwarten, aber eine bestimmte Anweisung für die Quadratwurzel, besser zu arbeiten (genauer) als ein mehrstufigen Betrieb mit Logarithmen.

beantwortet 23. September '13 um 18:00 Uhr







In Verbindung stehende Artikel