반응형
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가 크기가 작기 때문에 원소들을 반복하여 크기를 같게 합니다.
그리고 곱셈을 하는데
이를 그림으로 표현하면 아래와 같습니다.
만약 다음과 같이 두 배열이 브로드캐스트로 크기를 동일하게 할 수 없을 경우는 에러가 발생합니다.
arr_A = np.array([[1, 2], [3, 4]])
arr_B = np.array([[3, 5, 7]])
반응형
'Python > python 응용: 수학 및 과학' 카테고리의 다른 글
Numpy 복소수 계산하기: 근의 공식 (0) | 2022.12.21 |
---|---|
Python matplotlib 그래프 그리기 (0) | 2022.12.07 |
Python NumPy 행렬의 원소 접근하여 작업하기: trace (0) | 2022.12.06 |
Python numpy를 이용한 행렬 연산 (0) | 2022.12.06 |
Python과 선형대수: NumPy를 이용한 벡터 연산 (0) | 2022.12.05 |
댓글