넘파이에서 서로 다른 모양(shape)의 배열도 일정 조건을 만족하면 연산할 수 있는데, 이 똑똑한 기능을 브로드캐스팅(Broadcasting)이라고 합니다.
브로드캐스팅
1. 원소가 하나인 배열은 어떤 배열이나 브로드캐스팅이 가능
2. 하나의 배열이 1차원 배열인 경우, 브로드캐스팅이 가능
2-1. 두 배열이 모두 2차원 배열이면, 브로드캐스팅이 불가
(예시)
arr1.shape = (3, )
arr2.shape = (3, 3)
np.add(arr1, arr2) - 가능
3. 차원의 짝이 맞을때 브로드캐스팅이 가능
(예시)
arr1.shape = (4, 1)
arr2.shape = (1, 4)
np.add(arr1, arr2) - 가능
arr1 = np.array([[0, 0, 0],
[1, 1, 1],
[2, 2, 2]])
arr2 = np.array([5, 6, 7])
print(arr1 + arr2)
>> [[5 6 7]
[6 7 8]
[7 8 9]]
(3, 3)배열과 (1, 3) 배열은 서로 짝이 맞고, 하나의 배열이 1차원 배열이므로 브로드캐스팅이 가능합니다.
arr3 = np.array([1, 1, 1])
arr4 = np.array([[0],
[1],
[2]])
print(np.add(arr3, arr4))
>> [[1 1 1]
[2 2 2]
[3 3 3]]
(1, 3)배열과 (3, 1)배열은 서로 짝이 맞고, 하나의 배열이 1차원 배열이므로 브로드캐스팅이 가능합니다.
좋은글 감사합니다