Python/Numpy

[Numpy] 파이썬 제곱 함수 np.power 사용법 정리

jimmy_AI 2022. 3. 23. 22:07
반응형

파이썬 넘파이 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)