Trong trường của tôi, rất phổ biến để làm vuông một số, vận hành chúng lại với nhau và lấy căn bậc hai của kết quả. Điều này được thực hiện trong định lý pythagore, và ví dụ tính toán RMS.Exponentiation in Python - tôi có nên sử dụng toán tử thay vì math.pow và math.sqrt không?
Trong NumPy, tôi đã làm những điều sau đây:
result = numpy.sqrt(numpy.sum(numpy.pow(some_vector, 2)))
Và trong một cái gì đó trăn tinh khiết như thế này sẽ được dự kiến:
result = math.sqrt(math.pow(A, 2) + math.pow(B,2)) # example with two dimensions.
Tuy nhiên, tôi đã sử dụng hình thức trăn tinh khiết này, vì Tôi thấy nó nhỏ gọn hơn, không độc lập về nhập khẩu và dường như tương đương:
result = (A**2 + B**2)**0.5 # two dimensions
result = (A**2 + B**2 + C**2 + D**2)**0.5
Tôi đã nghe một số người cho rằng các nhà điều hành **
là loại hack, và rằng bình phương một số bằng cách exponentiating nó bằng 0.5
không phải là như vậy có thể đọc được. Nhưng điều tôi muốn hỏi là:
"Có bất kỳ lý do tính toán nào để thích hai lựa chọn thay thế cũ hơn (các) thứ ba không?"
Cảm ơn bạn đã đọc!
Đây có thể là một chủ đề có liên quan - http://stackoverflow.com/questions/327002/which-is-faster-in-python-x-5-or-math-sqrtx –
Tôi có xu hướng để nghĩ rằng math.sqrt() có thể đọc được nhiều hơn() ** 0.5. –
@Maxime, tôi sẽ đi xa hơn và chỉ sử dụng 'sqrt' với' từ sqrt nhập toán học. –