Python에서 지수 수행

Rayven Esplanada 2024년2월15일
  1. **연산자를 사용하여 Python에서 지수 수행
  2. pow()또는math.power()를 사용하여 Python에서 지수 수행
  3. 파이썬에서 지수를하기 위해numpy.np()사용
  4. 각 솔루션의 런타임 비교
Python에서 지수 수행

이 튜토리얼은 파이썬에서 지수화하는 방법을 보여줍니다.

파이썬 지수

수학에서 지수는 숫자가 자신과 여러 번 곱해지는 연산입니다.

Python은 지수화를 수행하는 데 도움이되는 내장 연산 및 함수를 제공합니다.

**연산자를 사용하여 Python에서 지수 수행

대부분의 개발자는 캐럿 기호^가 수학에서 지수의 기호로 사용되기 때문에 숫자의 거듭 제곱을 얻는 연산자라고 생각하는 것 같습니다. 그러나 대부분의 프로그래밍 언어에서 캐럿 기호는 비트 xor연산자 용으로 예약되어 있습니다.

파이썬에서 지수 연산자는 밑과 지수 사이에 연속 된 두 개의 별표**로 상징됩니다.

지수 연산자의 기능은 곱셈 연산자*의 동작을 보완합니다. 차이점은 지수 연산자의 두 번째 피연산자는 첫 번째 피연산자가 자체적으로 곱해지는 횟수를 설정하기위한 것입니다.

print(5 ** 6)

숫자56을 곱하려면 기본 피연산자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
Rayven Esplanada avatar Rayven Esplanada avatar

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

관련 문장 - Python Math