달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

브로드 캐스팅은  NumPY에서  shape가 다른 배열간에도 산술 연산이 가능하게 하는 기능이다. 

 

shape가 일치하지 않으면 다차원 배열을 할 수 없다고 했다. 이 기능은 특정 경우에만 사용할 수 있다. 모든 경우에 해당하는 것은 아니다. 큰 배열에 작은 배열을 여러번 연산하고자 할 때, 예를 들어 행렬의 각 행에 상수 벡터를 더하는 경우이다.

 

 

 

 

두 배열의 브로드캐스팅 규칙

1. 두 배열이 동일한 dimension을 가지고 있지 않다면 낮은 dimension의 1차원 배열이 높은 dimension 배열의 shpae로 간주한다.

2. 특정 차원에서 두 배열이 동일한 크기를 갖거나 두 배열 중 하나의 크기가 1이라면 그 두 배열은 특정 차원에서 compatible하다고 여겨진다

3. 두 행렬이 모든 차원에서 compatible하다면 브로드캐스팅이 가능하다.

4. 브로드캐스팅이 이뤄지면 각 배열 shape의 요소별 최소공배수로 이루어진 shape 가 두 배열의 shape로 간주한다.

5. 차원에 상관없이 크기가 1인 배열과 1보다 큰 배열이 있을 때, 크기가 1인 배열은 자신의 차원 수만큼 복사되어 샇인 것처럼 간주하다.

 

즉 다시 말해 차원이 낮은 배열을 쌓을 때 shpae가 동일하게 쌓을 수 없다면 더해지는 모양이 안나오면 브로드캐스팅이 되지 않는다.( 최소한 dimension은 동일해야 한다.)

 

브로드캐스팅을 지원하는 함수를 universal function 이라고 한다.

 

https://docs.scipy.org/doc/numpy/reference/ufuncs.html

 

Universal functions (ufunc) — NumPy v1.16 Manual

Universal functions (ufunc) A universal function (or ufunc for short) is a function that operates on ndarrays in an element-by-element fashion, supporting array broadcasting, type casting, and several other standard features. That is, a ufunc is a “vectori

docs.scipy.org

 

브로트캐스팅의 예

 

 

마지막으로 opencv-python을 이용하여 이미지 하나를 로드한 후 그 이미지의 ndarray의 shape와 ndim을 살펴보자

cv의 이미지 ndarray

 

Posted by 생짜
|