NumPy 브로드캐스팅 규칙

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


브로드캐스팅

일반적으로 NumPy는 모양이 다른 배열끼리의 연산은 불가능하다.

a = np.array([1,2,3])
b = np.array([1,2])
a + b

ValueError Traceback (most recent call last) in <module>()----> 1 a + bValueError: operands could not be broadcast together with shapes (3,) (2,)

에러에서도 보면 브로드캐스트가 되지 못했다는 것을 보여주고 있다. 그렇다는 것은 어떤 특정 조건이 맞아진다면 모양이 다른 배열끼리도 연산을 수행할 수 있다는 것을 의미한다.

  1. 두 배열의 차원의 크기가 같다.
  2. 두 배열 중 하나의 차원 크기가 1이다.

코드로 보면 아래와 같다.

a = np.array([[10, 120, 120], [80, 120, 100], [60, 90, 80]])
b = np.array([1, 2, 3])

print(a*b)
# [[ 10 240 360]
#  [ 80 240 300]
#  [ 60 180 240]]

(3,3) 배열과 (3,)끼리 곱하려니 (3,) 행렬이 (1,3)행렬로 확장된 후, 다시 (3,3)로 확장 및 복사 되어 계산된 것을 볼 수 있다.