[파이썬] 브로드캐스팅(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 아날로그 입출력 기본

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

[PLC] 절연 변압기 (Isolation Transformer)

[수학] 정규 분포란? 왜 종 모양을 띠고 있을까?

[농사] 식물의 광합성과 호흡

제너 다이오드에 저항을 연결하는 이유

[자동화] 안쓰는 안드로이드폰을 활용한 식물 성장 타임랩스 촬영

[트레이딩] 현재 주가 기준으로 기대수익률은 어떻게 계산할까?

[PLC] 래더 다이어그램과 PLC