2023년 9월 6일 수요일

NumPy Broadcasting


Broadcasting은 NumPy 라이브러리에서 다른 형태(shape)의 배열 간에도 산술 연산이 가능하게 해주는 기능입니다. 일반적으로, NumPy에서 배열 간 연산은 배열의 형태가 동일해야 하는데, Broadcasting은 이러한 제약을 완화해줍니다.

기본 규칙

Broadcasting은 다음과 같은 규칙을 따릅니다:

  1. 두 배열의 차원 수가 다르면, 더 작은 차원을 가진 배열의 형태(shape) 앞에 1을 추가합니다.
  2. 두 배열이 어떤 차원에서도 크기가 동일하거나, 한쪽이 1이라면 호환되는 것으로 간주됩니다.
  3. 어느 한 차원에서도 크기가 일치하지 않고 1도 아니라면 오류가 발생합니다.

이것 말은 어려운데 실제 동작하는것보면 쉽게 이해할 수 있습니다.

예제

예제 1: 벡터와 스칼라 덧셈

import numpy as np

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

result = a + b
# result: array([3, 4, 5])

예제 2: 2차원 배열과 1차원 배열 덧셈

A = np.array([[1, 2], [3, 4], [5, 6]])
B = np.array([1, 2])

result = A + B
# result: array([[2, 4], [4, 6], [6, 8]])

장점과 단점

장점

  • 간결성: 더 적은 메모리와 코드로 같은 연산을 수행할 수 있습니다.
  • 성능: Broadcasting을 이용한 연산은 내부적으로 최적화되어 있어 빠른 연산 속도를 제공합니다.

단점

  • 복잡성: Broadcasting 규칙을 이해하지 못하면 예상치 못한 결과를 얻을 수 있습니다.
  • 디버깅: 문제가 발생했을 때, 디버깅이 상대적으로 어렵습니다.

결론

NumPy의 Broadcasting 기능은 배열 연산을 더 간편하고 빠르게 해주지만, 사용에 앞서 해당 메커니즘을 잘 이해하는 것이 중요합니다. 잘 활용하면 다양한 수학적 문제와 데이터 분석 작업에서 큰 이점을 볼 수 있습니다.

댓글 없음:

댓글 쓰기