본문으로 바로가기

[Numpy] broadcasting 이해 및 활용하기

category AI/데이터분석 2020. 1. 20. 23:34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

 

 

브로드캐스팅 (Broadcasting)

shape이 같은 두 ndarray에 대한 연산은 각 원소별로 진행

연산이 가능한 두 ndarray가 만약 다른 shape을 갖는 경우 브로드캐스팅 (Shape 맞추기) 후 연산.

 

 

 

https://www.tutorialspoint.com/numpy/images/array.jpg

a와 b를 더할 때 서로 shape이 다르다.

이 때 broadcasting을 통해 자동으로 shape을 맞춘 후 연산을 진행함.

 

 

Broadcasting Rule

차원을 뒷차원부터 비교를 하며 shape이 같거나, 차원 중 값이 1인 것이 존재하면 가능함.

예를 들어, 위의 그림에서 b는 ((1), 3)의 모양을 하고 있으므로 브로드캐스팅이 가능함.

 

 

 

Shape이 같은 경우

그냥 각각 element끼리 더해준다.

 

 


Scalar(상수)와의 연산

 

각각의 element에 스칼라값이 모두 더해진다.

+ 뿐만아니라 모든 연산이 가능함.

 

위와 같이 % 연산을 하면 나머지를 반환하지만

이 때 0과 동일하냐는 조건을 달아주면 그에 따른 boolean list를 반환한다.

 

 

 


shape이 다른 경우

이 때 y가 각 행을 따라 복사되듯이 모두 더해지는 것을 확인할 수 있다.

 

 

이번에는 4크기의 1차원 배열을 만들어 더하기를 해본다.

할 수 없다고 에러가 뜬다.

 

이 때  x, y, z의 차원을 보면 아래와 같다.

앞서 rule에서 뒷차원부터 비교를 한다했으니..

x + y의 경우 각각의 뒷차원인 3과 3을 비교한다. --> 일치하니 연산진행.

x + z의 경우 각각의 뒷차원인 3과 4를 비교한다. --> 일치하지않으니 연산불가.

 

 

 

이번에는 1차원 배열이었던 y를 [1,3] 크기의 행렬로 바꿔본다.

 

그리고 다시 [4,3] 크기 행렬이었던 x와 덧셈을 진행한다.

둘 다 뒷차원이 3으로 더하기가 가능하다. :)

 

 

 


3차원 배열 브로드캐스팅

역시나 뒤에서부터 비교하며 4 -> 2 로 일치하니까 덧셈이 진행된다. 

이 때 y는 제일 처음차원이 생략되어있으므로 1이라고 취급하기 때문에 연산이 가능하다.

 

1차원 배열과도 덧셈이 쉽게 가능하다~

 

 

 

 

 

 

위 내용은 fastcampus 강의 내용을 정리한 것입니다.