기본적으로 numpy에서 연산을 할때 크기가 서로 동일한 배열(Array)끼리 연산이 진행된다.
다음 예를 살펴보자.
우선 두개의 배열을 생성하자.
np_arr1=np.array([[1,2,3],[3,4,5]])
print(np_arr1)
print(np_arr1.shape)
np_arr2=np.array([[10,11,12],[12,13,14]])
print(np_arr2)
print(np_arr2.shape)
[[1 2 3]
[3 4 5]]
(2, 3)
[[10 11 12]
[12 13 14]]
(2, 3)
덧셈
np_arr1+np_arr2
array([[11, 13, 15],
[15, 17, 19]])
뺄셈
np_arr1-np_arr2
array([[-9, -9, -9],
[-9, -9, -9]])
곱셈
np_arr1*np_arr2
array([[10, 22, 36],
[36, 52, 70]])
나눗셈
np_arr1/np_arr2
array([[0.1 , 0.18181818, 0.25 ],
[0.25 , 0.30769231, 0.35714286]])
브로드캐스트(BroadCast)
위에서는 배열(Array)가 같은 크기를 가져야 서로 연산이 가능하다고 했다.
하지만 넘파이에서는 브로드캐스트라는 기능을 제공해준다.
브로드캐스트란 서로 크기가 다른 array가 연산이 가능하게끔 하는 것이다.
print(np_arr1)
print(np_arr1.shape)
[[1 2 3]
[3 4 5]]
(2, 3)
np_arr3=np.array([10,11,12])
print(np_arr3)
print(np_arr3.shape)
[10 11 12]
(3,)
#덧셈 broadcast
np_arr1+np_arr3
array([[11, 13, 15],
[13, 15, 17]])
#뺄셈 broadcast
np_arr1-np_arr3
array([[-9, -9, -9],
[-7, -7, -7]])
#곱셈 boradcast
np_arr1*np_arr3
array([[10, 22, 36],
[30, 44, 60]])
#나눗셈 broadcast
np_arr1/np_arr3
array([[0.1 , 0.18181818, 0.25 ],
[0.3 , 0.36363636, 0.41666667]])
위와 같이 서로 shape가 다른 np_arr1,np_arr3의 연산이 가능하다.
위 결과를 살펴보면 np_arr3이 [10,11,12]에서 [[10,11,12],[10,11,12]]로 확장되어 계산됨을 확인할 수 있다.
또한 배열(Array)에 스칼라 연산도 가능하다.
np_arr1*10
array([[10, 20, 30],
[30, 40, 50]])
np_arr1**10
array([[ 1, 1024, 59049],
[ 59049, 1048576, 9765625]], dtype=int32)
'Data analysis > Numpy' 카테고리의 다른 글
5. Array boolean 인덱싱(마스크) (0) | 2021.03.19 |
---|---|
4. Array 인덱싱 (0) | 2021.03.19 |
2. zeros(),ones(),arange() 함수 (0) | 2021.03.19 |
1.Numpy란? (0) | 2021.03.19 |
배열(Array) 과 리스트(List)의 정의 및 차이점 (0) | 2021.03.19 |