[NumPy] 사칙연산(+ a)와 행렬곱

고범수·2022년 2월 24일

NumPy

목록 보기
4/5

NumPy array의 사칙연산과 행렬곱을 알아보자.

사칙연산 + a (덧셈, 뺄셈, 곱셉, 나눗셈, 거듭제곱, 나머지)

사칙연산 + a 모두 각 요소끼리의(Element-wise) 연산으로 이루어진다. 함수를 호출해서 연산해도 되고, 연산자(+, -, *, /, **, %)를 사용해도 된다.

numpy.add()

import numpy as np
a = np.arange(1,5)
b = np.arange(5,9)
print(a + b, np.add(a, b)) # [ 6  8 10 12] [ 6  8 10 12]

numpy.sub()

# numpy import는 이후 생략
a = np.arange(1,5)
b = np.arange(5,9)
print(a - b, np.subtract(a, b)) # [-4 -4 -4 -4] [-4 -4 -4 -4]

numpy.multiply()

a = np.arange(1,5)
b = np.arange(5,9)
print(a * b, np.multiply(a, b)) # [ 5 12 21 32] [ 5 12 21 32]

numpy.divide()

a = np.arange(1,5)
b = np.arange(5,9)
print(a / b, np.divide(a, b)) # [0.2        0.33333333 0.42857143 0.5       ] [0.2        0.33333333 0.42857143 0.5       ]

numpy.power()

a = np.arange(1,5)
b = np.arange(5,9)
print(a ** b, np.power(a, b)) # [    1    64  2187 65536] [    1    64  2187 65536]

numpy.mod()

a = np.arange(1,5)
b = np.arange(5,9)
print(a % b, np.mod(a, b)) # [1 2 3 4] [1 2 3 4]

다차원 NumPy array에 대해서도 마찬가지로 Element-wise로 동작한다.

a = np.arange(1,5).reshape(2,2)
b = np.arange(5,9).reshape(2,2)
print(a + b, a - b, a * b, a / b, a ** b, a % b, sep='\n')
#[[ 6  8]
# [10 12]]
#[[-4 -4]
# [-4 -4]]
#[[ 5 12]
# [21 32]]
#[[0.2        0.33333333]
# [0.42857143 0.5       ]]
#[[    1    64]
# [ 2187 65536]]
#[[1 2]
# [3 4]]

행렬곱

마찬가지로 함수를 호출해도 되고, 연산자(@)을 사용해도 된다.

numpy.matmul()

a = np.arange(1,5).reshape(2,2)
b = np.arange(5,9).reshape(2,2)
print(np.matmul(a,b), a @ b, sep='\n')
#[[19 22]
# [43 50]]
#[[19 22]
# [43 50]]

다음에는 브로드캐스팅에 대해 알아보도록 하자.

0개의 댓글