행렬 연산과 브로드캐스팅(Broadcasting)(1)

데이터 분석을 하는데 행렬 연산을 하는 경우가 종종 있습니다.

먼저 행렬이 무엇인지 그리고 행렬의 꼴에 대해서 먼저 알아보도록 하겠습니다.

괄호 안의 가로 방향의 숫자 1 4 방향을 '행'이라고 하고, 세로 방향의 4 5 6 방향을 '열'이라고 합니다.

그래서 위의 행렬은 2 X 3 행렬이라고 합니다.

그러면 만약 아래와 같은 행렬의 모양은 어떨까요?

맞습니다. 3 X 1 행렬입니다. 

만약에 모양이 다른 두 개의 행렬은 더하거나 뺄 수 있을까요? 행렬에서는 불가능한 연산입니다.

행렬의 덧셈과 뺄셈에서는 같은꼴의 행렬끼리만 덧셈과 뺄셈을 할 수 있습니다.

위의 예제는 2X2 행렬끼리의 덧셈을 보여주고 있습니다.

하지만 파이썬 넘파이에서는 꼭 같은 꼴의 행렬이 아니더라도 연산을 할 수 있도록 도와주고 있습니다.

이것을 브로드캐스팅(Broadcasting)이라고 합니다.

예를 들면 2x2 행렬과 2x1 행렬을 합을 더할 수 있습니다.

단 조건은 저 차원의 행렬 중 하나의 배열의 차원이 1 이하여야 됩니다.

아래의 코드를 참고해 보시면서 이해하면 좋을 것 같습니다.

import numpy as np


matrix1 = np.array([8, 5])


matrix2 = np.array([7, 5],
		   [4, 9])
                    
                    
matrix1 + matrix2
array([15, 10],
      [12, 14])
      
      
#또 다른 예시 하나 더!
matrix3 = np.random.randint(1,10, size=(1,3))
matrix4 = np.random.randint(1,10, size=(2,3))


matrix3
array([[9, 3, 6]])


matrix4
array([[9, 3, 1],
       [1, 1, 4]])


matrix3 + matrix4
array([[18,  6,  7],
       [10,  4, 10]])

다음편에서 계속됩니다...👍👍👍