a1 = np.array([1,2,3])
a2 = np.array([4,5,6])
print(a1 + a2)
print(a1 - a2)
# [5 7 9]
# [-3 -3 -3]
a1 = np.arange(1,5).reshape(2,2)
a2 = np.arange(11,15).reshape(2,2)
print(a1)
print(a2)
# [[1 2]
# [3 4]]
# [[11 12]
# [13 14]]
print(a1 + a2)
# [[12 14]
# [16 18]]
print(a2 - a1)
# [[10 10]
# [10 10]]
a1 = np.array([1,2,3,4])
print(a1 + 10)
# [11 12 13 14]
print(a1 * 2)
# [2 4 6 8]
a1 = np.arange(1,5).reshape(2,2)
a2 = np.arange(11,15).reshape(2,2)
print(a1)
print(a2)
# [[1 2]
# [3 4]]
# [[11 12]
# [13 14]]
print(a1 + 5)
# [[6 7]
# [8 9]]
print(a2 * 3)
# [[33 36]
# [39 42]]
print(a2 / 2)
# [[5.5 6. ]
# [6.5 7. ]]
<aside> 💡
배열의 구조가 다른 경우 에러 발생
a1 = np.array([1,2,3])
a2 = np.array([1,2])
print(a1 + a2)
# ValueError: operands could not be broadcast together with shapes (3,) (2,)
</aside>
a1 = np.array([[1,2,3],[4,5,6]]) # (2, 3)
a2 = np.array([10,20,30]) # (3, )
# 1차원 (3, )
[10,20,30]
# 2차원으로 변혈 (1,3)
[[10,20,30]]
# 2차원의 행이 2로 확장
[[10,20,30], [10,20,30]]
print(a1 + a2)
# [[11 22 33]
# [14 25 36]]
a1 = np.array([[1], [2], [3]]) # (3, 1)
a2 = np.array([10,20,30]) # (3, )
# a2 : (3, ) -> (1, 3)으로 변형
[[10, 20, 30]]
# a1과 a2비교 : a1 = (3, 1), a2 = (1, 3)
# 2차원의 경우 : 3 vs 1 -> a2의 2차원이 3으로 확장
[[10, 20, 30], [10, 20, 30], [10, 20, 30]]
# 1차원의 경우 : 1 vs 3 -> a1의 1차원이 3으로 확장
[[1, 1, 1], [2, 2, 2], [3, 3, 3]]
print(a1 + a2)
<aside> 💡
브로드캐스팅이 불가능한 경우
a1 = np.ones((2,3))
a2 = np.ones((3,2))
print(a1 + a2)
# ValueError: operands could not be broadcast together with shapes (2,3) (3,2)
</aside>
sum( ) : 원소의 합