[파이썬] 브로드캐스팅(Broadcasting)이란?

NumPy에서 반복문 없이, 차원이 다른 배열 간 연산을 가능하게 해주는 핵심 기능


📌 브로드캐스팅이 필요한 이유

NumPy를 사용하다 보면 이런 코드를 자주 보게 됩니다.

import numpy as np a = np.array([1, 2, 3]) print(a + 10) # 출력: [11, 12, 13]

여기서 10은 사실 [10, 10, 10]처럼 자동으로 확장되어 연산됩니다.
이러한 동작이 바로 브로드캐스팅(Broadcasting) 입니다.

브로드캐스팅은 형상이 다른 배열 간의 연산을 자동으로 가능하게 해주는 규칙입니다.


📚 브로드캐스팅을 사용하는 이유

✅ 1. 반복문 없이 코드 간결화

브로드캐스팅 덕분에 복잡한 반복문 없이 간단하게 연산을 표현할 수 있습니다.

# 반복문 대신 a = np.array([1, 2, 3]) b = 10 print(a + b) # [11, 12, 13]

✅ 2. 연산 속도 향상

브로드캐스팅은 NumPy 내부적으로 C언어 기반의 최적화된 연산을 사용합니다.
반복문보다 훨씬 빠르고, 대규모 데이터 처리에 유리합니다.

✅ 3. 메모리 효율성

브로드캐스팅은 가상 확장만 합니다.
즉, 실제로 [10, 10, 10]이라는 배열을 만들지 않아도 됩니다.


🔍 브로드캐스팅 예시

1. 스칼라 + 벡터

a = np.array([1, 2, 3]) b = 5 print(a + b) # [6, 7, 8]

2. 행벡터 + 열벡터

row = np.array([[1, 2, 3]]) # (1, 3) col = np.array([[10], [20], [30]]) # (3, 1) print(row + col)

출력:

[[11 12 13] [21 22 23] [31 32 33]]

→ (3,1) + (1,3) = (3,3)


⚠️ 주의할 점: 브로드캐스팅 규칙

NumPy는 다음 규칙에 따라 브로드캐스팅을 수행합니다:

  1. 뒤에서부터 비교

    • 차원이 맞거나,

    • 한쪽이 1이면 확장 가능

  2. 두 차원이 모두 다르고, 1도 아니면 오류

예시:

a.shape = (3, 1) b.shape = (1, 4) → 결과: (3, 4)로 브로드캐스트됨

🎯 실전에서의 활용

  • 이미지 밝기 조절: image + [10, 10, 10]

  • 시간별 판매량 + 평균값 비교

  • 통계 기반 정규화 연산: (X - mean) / std


📝 마무리

브로드캐스팅은 단순히 “자동 확장”이 아닙니다.
데이터 과학, 이미지 처리, 머신러닝 등 다양한 분야에서 연산을 간결하고 효율적으로 수행하게 해주는 필수 기능입니다.

차원이 안 맞아도 걱정하지 마세요. NumPy가 알아서 맞춰줍니다!
다만, 그 규칙은 반드시 이해하고 써야 합니다.

댓글

이 블로그의 인기 게시물

공압 속도 제어: 미터인 vs 미터아웃

[PLC] PLC 아날로그 입출력 기본

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

[주식] 한국거래소(KRX) 데이터 API 입문 가이드

3선 결선식 센서의 타입 PNP, NPN

사각형의 넓이 공식의 증명

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

[스마트팜] EC/pH 미터 만들기: 아두이노로 전기 전도도 및 pH 측정

3상 모터 전력에서 전류 계산하기 (How to Convert Three-Phase Power to Amps)

[PC] 최대절전모드에서 PC가 멋대로 켜지는 이유와 해결 방법