Na moim polu bardzo często należy wyrównywać liczby, operować nimi razem i pobierać pierwiastek kwadratowy z wyniku. Odbywa się to na podstawie twierdzenia Pitagorasa, a na przykład obliczenia RMS.Potęgowanie w Pythonie - czy powinienem preferować operatora ** zamiast math.pow i math.sqrt?
W numpy, mam zrobić, co następuje:
result = numpy.sqrt(numpy.sum(numpy.pow(some_vector, 2)))
A w czystej Pythona coś takiego należy się spodziewać, że:
result = math.sqrt(math.pow(A, 2) + math.pow(B,2)) # example with two dimensions.
Jednak, byłem przy użyciu tej czystej postaci Pythona, ponieważ Uważam, że to znacznie bardziej zwarty, import-niezależne, a pozornie równoważne:
result = (A**2 + B**2)**0.5 # two dimensions
result = (A**2 + B**2 + C**2 + D**2)**0.5
słyszałem niektórzy twierdzą, że operator **
jest w pewnym sensie hackerem, a wyrównywanie liczby przez potęgowanie go przez 0.5
nie jest tak czytelne. Ale chciałbym zapytać, czy:
"Czy istnieje jakikolwiek KOMPUTACYJNY powód, aby preferować poprzednie dwie alternatywy w stosunku do trzeciej (tych)?"
Dzięki za przeczytanie!
Może to być odpowiedni temat - http://stackoverflow.com/questions/327002/which-is-faster-in-python-x-5-or-math-sqrtx –
Mam tendencję myśleć, że math.sqrt() jest bardziej czytelny niż() ** 0.5. –
@Maxime, chciałbym pójść jeszcze dalej i po prostu użyć 'sqrt' z' od matematyki import sqrt'. –