파이썬 넘파이 power 함수 사용 방법 예제 모음
안녕하세요. 이번 글에서는 제곱 연산을 수행하는 파이썬 넘파이의 np.power 함수의 기능을
케이스별 예제를 중심으로 자세하게 설명해보도록 하겠습니다.
참고로, 이 글은 numpy.power 공식 설명 document의 내용을 기반으로 작성되었습니다.
np.power(number, number) : 단일 숫자의 제곱 형태
단일 숫자에만 적용하는 가장 기본적인 넘파이 power 함수의 사용 형태로
np.power(m, n)의 형태로 작성하며, m ** n의 연산 수행 결과와 거의 동일하게 나타납니다.
m, n 위치에는 정수와 실수가 모두 input으로 들어올 수는 있으나,
n이 음수인 경우에는 m 또는 n 중 하나는 반드시 실수 형태이어야만 합니다.
import numpy as np
np.power(4, 2) # 16
np.power(16, 0.5) # 4.0
np.power(8, -1) # ValueError: Integers to negative integer powers are not allowed.
np.power(8.0, -1) # 0.125
np.power(8, -1.0) # 0.125
np.power(array, number) : array 각각의 값^number 형태
np.power(array_like 자료형, n)처럼 작성하는 형태로
앞 쪽 input인 array의 각 값에 대하여 n제곱을 취한 결과를 담은 array가 반환됩니다.
np.power([1, 2, 3, 4], 2) # array([ 1, 4, 9, 16])
np.power([1, 2, 3, 4], 0.5) # array([1. , 1.41421356, 1.73205081, 2. ])
np.power([1., 2., 3., 4.], -1) # array([1. , 0.5 , 0.33333333, 0.25 ])
np.power([[1, 3],
[5, 7]], 3)
'''
array([[ 1, 27],
[125, 343]])'''
np.power(number, array) : number^array 각각의 값 형태
바로 위의 경우에서 앞 뒤의 인자 구성만 바꾼 경우로
np.power(m, array_like 자료형)로 작성 시, m에 array의 각 값들 만큼의 제곱을 취한
결과들을 모아서 담은 배열을 반환합니다.
np.power(2, [1, 3, 5]) # array([ 2, 8, 32])
np.power(-0.5, [1, 2, 3]) # array([-0.5 , 0.25 , -0.125])
np.power(4, [-1, 0.5, 2]) # array([ 0.25, 2. , 16. ])
np.power(array, array) : 매칭되는 위치의 값들끼리 제곱 형태
만일 앞과 뒤 인자를 모두 array_like 형태로 작성해줄 경우,
각 array의 같은 위치에 해당하는 제곱 값들을 모은 결과가 반환됩니다.
예를 들어, np.power([a, b, c], [d, e, f])의 결과는
[a^d, b^e, c^f]이 됩니다.
유의해야할 점은 앞과 뒤 인자에 들어올 배열들의 shape이 일치해야 한다는 것입니다.
np.power([1, 2, 3], [3, 5, 4]) # array([ 1, 32, 81])
np.power([1, 4, 16], [1, 0.5, -1]) # array([1. , 2. , 0.0625])
np.power([1, 4, 16], [1, 0.5]) # ValueError: operands could not be broadcast together with shapes (3,) (2,)
물론, 아래와 같이 broadcasting을 적용한 배열 제곱 연산 수행도 가능합니다.
np.power([[1, 3],
[5, 7]], [1, 2])
'''
array([[ 1, 9],
[ 5, 49]])'''
np.power([[1, 3],
[5, 7]], [[1],
[2]])
'''
array([[ 1, 3],
[25, 49]])'''
np.power(음수, 정수가 아닌 실수) : nan vs 복소수 설정
np.power(음수, 소수) 형태로 작성된 경우,
결과는 기본적으로는 np.nan 값으로 반환됩니다.
다만, 함수 내 dtype 인자를 'complex'로 설정해주시면 복소수 값의 결과를
반환받을 수 있습니다.
np.power(-1, 0.5) # np.nan
np.power(-1, 0.5, dtype = 'complex') # (6.123233995736766e-17+1j)
'Python > Numpy' 카테고리의 다른 글
[Numpy] np.unique 사용법 정리 : 고유한 값들만 모아서 반환 (2) | 2022.03.24 |
---|---|
[Numpy] 파이썬 이항분포 표본 추출, 정규분포 근사 시각화 예제 (4) | 2022.03.02 |
[Numpy] 파이썬 상삼각행렬 생성 함수 : np.triu 사용법 (1) | 2022.02.05 |