브로드 캐스팅은 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
마지막으로 opencv-python을 이용하여 이미지 하나를 로드한 후 그 이미지의 ndarray의 shape와 ndim을 살펴보자
'karma( 업 ) > Python' 카테고리의 다른 글
Python에 main함수 만들기 (0) | 2019.06.18 |
---|---|
Python은 왜 main함수가 없을까? (0) | 2019.06.18 |
4. 인덱싱, 슬라이싱, 전치, 형태변경, 연결, 연산을 이용한 다차원 배열 현태 변경하기 (0) | 2019.05.06 |
3. 메서드를 이용해서 최대, 최소, 평균, 표준편차 등 통계값 구하기 (0) | 2019.05.06 |
2. 다차원 배열 생성하기 (0) | 2019.05.06 |