Nel mio campo è molto comune raggruppare alcuni numeri, gestirli insieme e ottenere la radice quadrata del risultato. Questo è fatto nel teorema di Pitagora, e il calcolo RMS, per esempio.Esponenziazione in Python - dovrei preferire l'operatore ** invece di math.pow e math.sqrt?
In NumPy, ho fatto quanto segue:
result = numpy.sqrt(numpy.sum(numpy.pow(some_vector, 2)))
E in pitone qualcosa di puro come questo ci si aspetterebbe:
result = math.sqrt(math.pow(A, 2) + math.pow(B,2)) # example with two dimensions.
Tuttavia, ho utilizzato questa forma di pitone pura, dal momento che Lo trovo molto più compatto, indipendente dall'importazione e apparentemente equivalente:
result = (A**2 + B**2)**0.5 # two dimensions
result = (A**2 + B**2 + C**2 + D**2)**0.5
Ho sentito alcune persone sostengono che l'operatore **
è una sorta di hack e che la quadratura di un numero esponentandolo da 0.5
non è così leggibile. Ma quello che vorrei chiedere è se:
"C'è qualche ragione COMPUTAZIONALE per preferire le due precedenti alternative rispetto alla terza (s)?"
Grazie per la lettura!
Questa potrebbe essere una discussione pertinente - http://stackoverflow.com/questions/327002/which-is-faster-in-python-x-5-or-math-sqrtx –
Tendo pensare che math.sqrt() sia più leggibile di() ** 0.5. –
@Maxime, vorrei andare avanti e usare semplicemente 'sqrt' con' da math import sqrt'. –