Python에서 지수 수행
-
**
연산자를 사용하여 Python에서 지수 수행 -
pow()
또는math.power()
를 사용하여 Python에서 지수 수행 -
파이썬에서 지수를하기 위해
numpy.np()
사용 - 각 솔루션의 런타임 비교
이 튜토리얼은 파이썬에서 지수화하는 방법을 보여줍니다.
수학에서 지수는 숫자가 자신과 여러 번 곱해지는 연산입니다.
Python은 지수화를 수행하는 데 도움이되는 내장 연산 및 함수를 제공합니다.
**
연산자를 사용하여 Python에서 지수 수행
대부분의 개발자는 캐럿 기호^
가 수학에서 지수의 기호로 사용되기 때문에 숫자의 거듭 제곱을 얻는 연산자라고 생각하는 것 같습니다. 그러나 대부분의 프로그래밍 언어에서 캐럿 기호는 비트 xor
연산자 용으로 예약되어 있습니다.
파이썬에서 지수 연산자는 밑과 지수 사이에 연속 된 두 개의 별표**
로 상징됩니다.
지수 연산자의 기능은 곱셈 연산자*
의 동작을 보완합니다. 차이점은 지수 연산자의 두 번째 피연산자는 첫 번째 피연산자가 자체적으로 곱해지는 횟수를 설정하기위한 것입니다.
print(5 ** 6)
숫자5
에6
을 곱하려면 기본 피연산자5
와 지수 피연산자6
사이에**
연산자를 사용합니다.
출력:
15625
다른 유형의 값에 대해이 연산자를 테스트 해 보겠습니다.
정수, 음수, 0, 1
보다 작고 1
보다 큰 두 개의 float
값을 초기화합니다. 그런 다음 임의의 정수를 지수로 할당합니다.
num1 = 2
num2 = -5
num3 = 0
num4 = 1.025
num5 = 0.5
print(num1, "^12=", num1 ** 12)
print(num2, "^4=", num2 ** 4)
print(num3, "^9999=", num3 ** 9999)
print(num4, "^-3=", num4 ** -3)
print(num5, "^8=", num5 ** 8)
출력:
2^12= 4096
-5^4= 625
0^9999= 0
1.025^-3= 0.928599410919749
0.5^8= 0.00390625
pow()
또는math.power()
를 사용하여 Python에서 지수 수행
파이썬에서 지수를 수행하는 또 다른 방법은 밑과 지수가 주어진 값을 지수화하도록 설계된 함수pow()
를 사용하는 것입니다. math
모듈은 동일한 목적으로pow()
를 자체적으로 구현합니다.
이 두 함수에는 두 개의 인수가 있습니다. 첫 번째 인수는 밑수를위한 것이고 두 번째는 지수를위한 것입니다.
출력을 비교할 수 있도록 동일한 인수를 사용하여 두 함수를 여러 번 호출 해 보겠습니다.
import math
print(pow(-8, 7))
print(math.pow(-8, 7))
print(pow(2, 1.5))
print(math.pow(2, 1.5))
print(pow(4, 3))
print(math.pow(4, 3))
print(pow(2.0, 5))
print(math.pow(2.0, 5))
출력:
-2097152
-2097152.0
2.8284271247461903
2.8284271247461903
64
64.0
32.0
32.0
결과의 유일한 차이점은math.pow()
는 정수 인수가 전달 되더라도 항상float
값을 반환하는 반면pow()
는float
가 하나 이상있는 경우에만float
를 반환한다는 것입니다. 논의.
파이썬에서 지수를하기 위해numpy.np()
사용
모듈 NumPy
에는 지수화를위한 자체 함수power()
도 있습니다. power()
는pow()
함수와 동일한 인수를받습니다. 여기서 첫 번째 인수는 기본 값이고 두 번째 인수는 지수 값입니다.
NumPy
를 사용하려면pip
또는pip3
을 통해 설치해야합니다.
- 파이썬 2 :
pip install numpy
- 파이썬 3 :
pip3 install numpy
numpy.power()
를 사용하여pow()
에서 동일한 예제 세트를 출력 해 봅시다.
print(np.power(-8, 7))
print(np.power(2, 1.5))
print(np.power(4, 3))
print(np.power(2.0, 5))
출력:
-2097152
2.8284271247461903
64
32.0
power()
는 내장 Python 함수pow()
와 동일한 출력을 생성하며float
인수가없는 경우 정수를 반환합니다.
각 솔루션의 런타임 비교
이 세 가지 함수와**
연산자가 큰 지수 값으로 실행되는 데 걸리는 시간을 비교해 보겠습니다. 타이밍 함수의 경우 timeit
모듈을 가져와 각 솔루션의 런타임을 인쇄합니다.
밑수 값은 2
가되고 지수 값은 99999
가됩니다.
import numpy as np
import math
import time
start = time.process_time()
val = 2 ** 99999
print("** took", time.process_time() - start, "ms")
start = time.process_time()
val = pow(2, 99999)
print("pow() took", time.process_time() - start, "ms")
start = time.process_time()
val = np.power(2, 99999)
print("np.power() took", time.process_time() - start, "ms")
start = time.process_time()
val = math.pow(2, 99999)
print("math.pow() took", time.process_time() - start, "ms")
출력:
** took 0.0006959999999999744 ms
pow() took 0.00039000000000000146 ms
np.power() took 1.6999999999989246e-05 ms
Traceback (most recent call last):
File "/Users/rayven/python/timeit.py", line 15, in <module>
val = math.pow(2,99999)
OverflowError: math range error
주목해야 할 가장 명백한 것은math.pow()
가OverflowError
를 일으킨다는 것입니다. 이것은math.pow()
가 큰 값의 지수를 지원할 수 없다는 것을 의미합니다. 대부분이 모듈이 지수화를 구현 한 방식 때문일 가능성이 높습니다.
세 가지 다른 방법의 차이는 사소하지만이 예제에서np.power()
는 지수화를 수행하는 가장 빠른 함수입니다.
지수를9999
로 줄이면 어떨까요? math.pow()
가 무엇을 출력하는지 봅시다.
** took 1.0000000000010001e-05 ms
pow() took 4.000000000004e-06 ms
np.power() took 2.0000000000020002e-05 ms
math.pow() took 2.9999999999752447e-06 ms
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn