[파이썬][numpy] numpy에서 브로드캐스팅

브로드캐스팅(Broadcasting)은 numpy를 사용하는 파이썬에서 배열 연산을 실행할 때 매우 편리한 기능입니다. 브로드캐스팅을 사용하면 다른 모양(shape)을 가진 배열들 간에도 연산을 수행할 수 있습니다. 이를 통해 중첩된 반복문을 사용하지 않고 간결한 코드로 배열 연산을 수행할 수 있습니다.

예를 들어, 두 개의 numpy 배열을 더하는 경우를 생각해봅시다. 만약 두 배열의 크기가 동일하다면, 각 요소별로 덧셈 연산을 수행하면 됩니다. 하지만 만약 배열의 크기가 다르다면 어떻게 해야할까요?

numpy는 브로드캐스팅 규칙에 따라 자동으로 배열의 크기를 맞춰주고 연산을 수행합니다. 간단하게 말하자면, 작은 배열의 모양을 늘려서 큰 배열과 동일한 크기로 만들고 연산을 수행합니다. 이러한 기능을 사용하면 for 반복문을 사용하지 않고도 배열 간 연산을 수행할 수 있습니다.

다음은 브로드캐스팅을 사용하는 예제 코드입니다.

import numpy as np

# 두 개의 배열 생성
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

# 배열 덧셈 연산
result = array1 + array2

print(result)

위의 예제 코드에서는 array1array2라는 두 개의 배열을 생성하고, 덧셈 연산을 수행합니다. array1array2의 크기가 동일하므로 각 요소별로 더한 결과 [5, 7, 9]가 출력됩니다.

만약 배열의 크기가 다른 경우에도 브로드캐스팅을 사용할 수 있습니다. 예를 들어, 스칼라 값을 배열에 곱하려고 한다면 numpy는 스칼라 값을 해당 배열의 크기에 맞춰서 브로드캐스팅을 수행합니다.

import numpy as np

# 배열 생성
array = np.array([1, 2, 3])

# 배열에 스칼라 곱하기
result = array * 2

print(result)

위의 예제 코드에서는 array라는 배열에 스칼라 값인 2를 곱하여 결과 [2, 4, 6]를 출력합니다. numpy는 스칼라 값을 array의 크기와 동일한 크기로 확장하고 곱셈 연산을 수행합니다.

브로드캐스팅은 numpy에서 배열 연산을 수행하는 데 매우 유용한 기능입니다. 이를 사용하여 중첩된 반복문을 피하고 간결하고 효율적인 코드를 작성할 수 있습니다. 알아두면 numpy를 더욱 효율적으로 활용할 수 있습니다.