[Numpy] Broadcasting(브로드캐스팅)

반응형
    반응형

    브로트캐스팅에 대해 알아보겠습니다.

     

    일반적으로 ndarray는 배열이 행렬으로 되어있습니다. 보통 행렬은 같은 모양끼리 연산을 할 수 있습니다. ndarray도 행렬로 이루어져 있으므로 배열이 같은 형식끼리 연산을 하게 되는게 일반적입니다. 하지만 예외적으로 numpy에서는 배열 모양이 달라도 연산을 할 수 있습니다. 이런 예외적인 계산방식을 Broadcasting(브로드캐스팅)이라고 합니다.

     

    그림과 같은 방식의 계산이 일어납니다.  numpy 안에 내장되어 있는 브로드캐스팅 기능으로 편리하게 계산을 할 수 있습니다. 주의할 점은 브로드캐스팅이 되려면 그림과 같이 뒷차원의 배열과 같아야 합니다.

     

    import numpy as np
    a = np.arange(15).reshape(3,5)
    b = np.arange(5)
    a+b

    a의 shape는 (3,5) 이고 b는 (5,)입니다. 브로드캐스팅에 의해 b가 (3,5)로 변한후 계산을 하게 됩니다.

    당연하겠지만 브로드캐스팅이 모든 shape에서 일어나지는 않습니다.

    c = np.arange(3)
    a+c

    c가 (3,)인데 이런경우 앞뒤 모양이 맞지 않아 계산이 안됩니다.

    그래서 반드시 뒤차원의 배열과 같아야 계산이 일어난다는 것을 명심하길 바랍니다.

     

    곱셈의 경우는 스칼라 곱을 생각하면 됩니다.

    행렬에 스칼라곱을 하면 모든 원소에 곱이 됩니다. 마찬가지로 numpy에서도 일어납니다.

    a = np.arange(15).reshape(3,5)
    a*2

    모든 원소에 2가 곱해진 것을 볼 수 있습니다.

     

    'Python > Numpy' 카테고리의 다른 글

    ndarray 데이터로 그래프 그리기(matplotlib)  (2) 2020.06.05
    [Numpy] Bool 이용하기  (4) 2020.06.02
    axis(축) 이해  (2) 2020.05.25
    [Numpy] 연산,통계,집계함수  (2) 2020.05.21
    Reshape  (0) 2020.05.19

    댓글

    Designed by JB FACTORY

    ....