Python Numpy 강좌 : 제 12강 - 브로드캐스팅

Python Numpy Broadcasting

Python Numpy 강좌 : 제 12강 - 브로드캐스팅
[ Python-Numpy ] - 윤대희

브로드캐스팅(Broadcasting)


브로드캐스팅이란 Numpy 배열에서 차원의 크기가 서로 다른 배열에서도 산술 연산을 가능하게 하는 원리입니다.

두 배열 간 차원의 크기가 (4, 2), (2, ) 일 때 산술 연산을 실행한다면 (2, )의 배열이 (4, 2) 행렬의 각 행에 대해 요소별 연산을 실행할 수 있습니다.

두 배열 간의 차원의 크기가 달라도 차원의 크기가 더 큰 배열에 대해 작은 배열을 여러 번 반복하지 않아도 되는 것을 의미합니다.

  • Tip : (2, )은 1차원 형태의 배열을 의미합니다. 즉, [a b]의 값을 지닙니다.



브로드캐스팅 허용 규칙

  1. 두 배열의 차원(ndim)이 같지 않다면 차원이 더 낮은 배열이 차원이 더 높은 배열과 같은 차원의 배열로 인식됩니다.
  2. 반환된 배열은 연산을 수행한 배열 중 차원의 수(ndim)가 가장 큰 배열이 됩니다.
  3. 연산에 사용된 배열과 반환된 배열의 차원의 크기(shape)가 같거나 1일 경우 브로드캐스팅이 가능합니다.
  4. 브로드캐스팅이 적용된 배열의 차원 크기(shape)는 연산에 사용된 배열들의 차원의 크기에 대한 최소 공배수 값으로 사용합니다.



import numpy as np 

array1 = np.array([1, 2, 3, 4]).reshape(2, 2)
array2 = np.array([1.5, 2.5])

add = array1 + array2

print(add)
결과
[[2.5 4.5]
[4.5 6.5]]


각 배열의 차원이 달라도 브로드캐스팅 허용 규칙에 위반되지 않는다면 연산이 가능합니다.

또한, 형식 캐스팅(type casting)을 지원해 두 배열의 자료형(dtype)이 다르더라도 연산이 가능합니다.

  • Tip : 형식 캐스팅 : 자료형을 비교해 표현 범위가 더 넓은 자료형을 선택하는 것을 의미합니다.


Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post Python Numpy 강좌 : 제 11강 - 병합 및 분할 ⤧  Next post Python Numpy 강좌 : 제 13강 - 메모리 레이아웃
    Python-Numpy Category