일정 조건을 부합하는 다른 형태의 배열끼리 연산을 수행하는 것을 의미
가장 간단한 예를 들어보자.
import numpy as np
a1 = np.arange(5)
print(a1)
# result
# [0 1 2 3 4]
print(a1 + 100)
# result
# [100 101 102 103 104]
위와 같은 연산으로 +, -, *, / 모두 가능하다.
.
.
.
.
위의 경우만 broadcasting 가능 !
.
.
.
예를 들어 shape이 (5, 6) 인 데이터 b가 있다고 하자.
b = np.arange(30).reshape(5,6)
print(b)
# result
# [[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]]
print(b*5)
# result
# [[ 0 5 10 15 20 25]
[ 30 35 40 45 50 55]
[ 60 65 70 75 80 85]
[ 90 95 100 105 110 115]
[120 125 130 135 140 145]]
print(b)
# result
# [[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]]
b2 = np.arange(6)
print(b2)
# result
# [0 1 2 3 4 5] <- (6, )
print(b + b2)
# result
# [[ 0 2 4 6 8 10]
[ 6 8 10 12 14 16]
[12 14 16 18 20 22]
[18 20 22 24 26 28]
[24 26 28 30 32 34]]
print(b)
# result
# [[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]]
b3 = np.arange(100,130).reshape(5,6)
print(b3)
# result
# [[100 101 102 103 104 105]
[106 107 108 109 110 111]
[112 113 114 115 116 117]
[118 119 120 121 122 123]
[124 125 126 127 128 129]]
print(b + b3)
# result
# [[100 102 104 106 108 110]
[112 114 116 118 120 122]
[124 126 128 130 132 134]
[136 138 140 142 144 146]
[148 150 152 154 156 158]]
c= np.arange(15).reshape(5,3)
print(c)
# result
# [[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]
[12 13 14]]
c1 = [2, 10, 12] # (3, ) -> c 와 broadcasting 가능
print(c * c1)
# result
# [[ 0 10 24]
[ 6 40 60]
[ 12 70 96]
[ 18 100 132]
[ 24 130 168]]