본문 바로가기
Python/python 응용: 수학 및 과학

Python 브로드캐스트: 크기가 다른 배열의 곱셈

by 철이88 2022. 12. 6.
반응형

Python에서 NumPy모듈을 이용하면 배열에 대한 연산을 할 수 있습니다. 크기가 같은 배열들의 곱은 같은 위치의 원소들을 곱해주는데, 배열들의 크기가 다르면 크기가 작은 배열을 확장하여 크기를 같게 하여 곱셈을 합니다. 이러한 방법을 브로드캐스트(broadcast)라고 합니다.

Python에서 크기가 다른 배열들의 곱: 브로드캐스트


전에 python에서 행렬의 곱을 배웠는데 이번 내용은 행렬의 연산과는 관계가 없습니다.

NumPy를 이용해 만들어진 배열들은 곱하기 기호(*)를 이용하여 곱셈을 할 수 있습니다.
만약 배열들의 크기가 같으면, 두 배열의 곱은 같은 위치의 원소들을 곱해줍니다.

그리고 만약 배열들의 크기가 다르면, 한 배열이 다른 배열보다 (모든 차원에서) 작으면, 그 작은 배열의 원소들을 반복하여, 두 배열의 크기를 같게 하고 곱셈을 합니다. 이를 브로드캐스트라고 합니다.

다음은 크기가 다른 두 배열을 곱하여 출력하는 코드입니다.

import numpy as np
arr_A = np.array([[1, 2], [3, 4]])
arr_B = np.array([[3, 5]])
print(arr_A*arr_B)

위 예에서는 두 번째 배열 arr_B가 크기가 작기 때문에 원소들을 반복하여 크기를 같게 합니다.
그리고 곱셈을 하는데
이를 그림으로 표현하면 아래와 같습니다.

python-numpy-broadcast

만약 다음과 같이 두 배열이 브로드캐스트로 크기를 동일하게 할 수 없을 경우는 에러가 발생합니다.

arr_A = np.array([[1, 2], [3, 4]])
arr_B = np.array([[3, 5, 7]])


 

반응형

댓글