Python-abs 대 fab
파이썬에는 숫자의 절대 값을 찾는 두 가지 유사한 방법이 있음을 알았습니다.
먼저
abs(-5)
둘째
import math
math.fabs(-5)
이 방법은 어떻게 다릅니 까?
math.fabs()
가능한 경우 인수를 float로 변환합니다 (할 수없는 경우 예외가 발생 함). 그런 다음 절대 값을 취하고 결과를 부동 소수점으로 반환합니다.
부동 소수점 외에도 abs()
정수 및 복소수로도 작동합니다. 반환 유형은 인수 유형에 따라 다릅니다.
In [7]: type(abs(-2))
Out[7]: int
In [8]: type(abs(-2.0))
Out[8]: float
In [9]: type(abs(3+4j))
Out[9]: float
In [10]: type(math.fabs(-2))
Out[10]: float
In [11]: type(math.fabs(-2.0))
Out[11]: float
In [12]: type(math.fabs(3+4j))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/alexei/<ipython-input-12-8368761369da> in <module>()
----> 1 type(math.fabs(3+4j))
TypeError: can't convert complex to float
편집 : @aix가 제안했듯이 속도 차이를 비교하는 더 나은 (더 공정한) 방법 :
In [1]: %timeit abs(5)
10000000 loops, best of 3: 86.5 ns per loop
In [2]: from math import fabs
In [3]: %timeit fabs(5)
10000000 loops, best of 3: 115 ns per loop
In [4]: %timeit abs(-5)
10000000 loops, best of 3: 88.3 ns per loop
In [5]: %timeit fabs(-5)
10000000 loops, best of 3: 114 ns per loop
In [6]: %timeit abs(5.0)
10000000 loops, best of 3: 92.5 ns per loop
In [7]: %timeit fabs(5.0)
10000000 loops, best of 3: 93.2 ns per loop
In [8]: %timeit abs(-5.0)
10000000 loops, best of 3: 91.8 ns per loop
In [9]: %timeit fabs(-5.0)
10000000 loops, best of 3: 91 ns per loop
따라서 정수 abs()
보다 약간의 속도 이점이있는 것 같습니다 fabs()
. 수레를 들어, abs()
과는 fabs()
비슷한 속도를 보여줍니다.
@aix가 말한 것 외에도 고려해야 할 사항은 속도 차이입니다.
In [1]: %timeit abs(-5)
10000000 loops, best of 3: 102 ns per loop
In [2]: import math
In [3]: %timeit math.fabs(-5)
10000000 loops, best of 3: 194 ns per loop
그래서 abs()
보다 더 빨리이다 math.fabs()
.
math.fabs()
always returns float, while abs()
may return integer.
abs()
: Returns the absolute value as per the argument i.e. if argument is int then it returns int, if argument is float it returns float. Also it works on complex variable also i.e. abs(a+bj)
also works and returns absolute value i.e.math.sqrt(((a)**2)+((b)**2)
math.fabs()
: It only works on the integer or float values. Always returns the absolute float value no matter what is the argument type(except for the complex numbers).
참고URL : https://stackoverflow.com/questions/10772302/python-abs-vs-fabs
'code' 카테고리의 다른 글
이러한 예외를 던지지 않는 이유는 무엇입니까? (0) | 2020.08.18 |
---|---|
Firebase 클라우드 기능이 매우 느립니다. (0) | 2020.08.18 |
고유 한 컴퓨터 ID 생성 (0) | 2020.08.18 |
React Redux에서 구성 요소와 컨테이너의 차이점 (0) | 2020.08.18 |
div 오버플로에서 세로 스크롤 막대 비활성화 : 자동 (0) | 2020.08.17 |