Numpy, Pandas는 머신러닝, 딥러닝, 데이터사이언스를 배우는 개발자의 필수소양이라고 할 수 있다.
이번글에서는 부스트캠프 1주차 강의에서 배운 Numpy, Pandas활용법을 다뤄볼 것이다.
강의내용이 워낙 방대해서 이번에도 실용성 있거나 어려운 부분만 정리해 보겠다.
Ndarray 생성
np.empty( ): ndarray생성함수 (zeros, ones와 동일한 문법이지만 Memory initialization이 일어나지 않음)
np.empty(shape=(2, 2), dtype=int)
np.empty(shape=(2, 2), dtype=int)
array([[94570266456540, 0],
[ 249108103216, 399431958577]])
array([[94570279784811, 0],
[ 48, -1]])
초기화가 되지 않아 Random한 값을 참조하고 있다.
실제로 같은 코드를 계속 돌리면 계속해서 다른 값이 들어가 있는 걸 확인가능하다.
diag( ): 대각 행렬 값 추출
인덱스를 지정해 특정 열부터 추출 가능하다
mat = np.arange(15).reshape(3, 5)
print(np.diag(mat))
print(np.diag(mat, k=3))
array([ 0, 6, 12])
array([3, 9])
Ndarray opetarions
np.concatenate( ): ndarray를 붙여줌
a = np.array([[1,2,3]])
b = np.array([[3,4,5]])
print(np.concatenate((a, b), axis=0))
print(np.concatenate((a, b), axis=1))
array([[1, 2, 3],
[3, 4, 5]])
array([[1, 2, 3, 3, 4, 5]])
축을 지정해 줄 수 있으며 반환 값의 차원은 입력값의 차원과 같음
np.any( ), an.alll( )
any: 조건에 하나라도 만족한다면 True
all: 조건에 모두 만족한다면 True
a = np.arange(10)
print(np.any(a>5))
print(np.all(a>5))
True
False
np.where(condition, True, False)
condition에 따라 True, False로 넣은 값으로 생성된 array반환
True, False에 값을 넣어주지 않을 시 True조건에 충족하는 Index를 반환한다.
a = np.arange(10)
print(a)
print(np.where(a > 5, 10, 0))
print(np.where(a>5))
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([ 0, 0, 0, 0, 0, 0, 10, 10, 10, 10])
(array([6, 7, 8, 9]),)
Appendix
평소인식하지 못했던 부분이나 검색하기 귀찮은 부분들
1. ndarray에는 하나의 data type만 배열에 넣을 수 있음
2. a[0][0] = a[0, 0] (1년 쓰면서도 너무 자연스러워 알아차리지 못한...)
3. concatenate같은 할당에서는 Numpy의 연산적 이점이 없다
(동일 자료형 ndarray의 주솟값을 이용한 연산적 이득만이 장점이므로)
4. newaxis!!
x = np.array([1, 2])
print(x, x.shape)
print(x[np.newaxis, :], x[np.newaxis, :].shape)
print(x[:, np.newaxis], x[:, np.newaxis].shape)
(array([1, 2]), (2,))
(array([[1, 2]]), (1, 2))
(array([[1],[2]]),
(2, 1))
5. ndarray형 변환
a_int = np.array([1,2,3,4], int)
a_float = a.astype(float)
print(a_float)
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
넘파이는 머신러닝이나 딥러닝 수업 때 1,2주 차 때 기초내용만 빠르게 배우고 넘어가서 깊게 살펴본 여유는 없었다.
그래서 보통 데이터 처리할 때 이거 어카더라? 싶으면 맨날 구글로 달려갔는데(newaxis, astype은 수없이 검색했던 기억이 있다.)
이번에 몰랐던 부분을 다시 짚고 복습할 수 있는 좋은 기회였던 것 같다.
'Boostcamp' 카테고리의 다른 글
[부스트캠프] Semantic Segmentation 정리 (0) | 2023.04.09 |
---|---|
[부스트캠프] ResNet 정리 (0) | 2023.04.06 |
[부스트캠프]Pandas 정리 (0) | 2023.03.18 |
[부스트캠프]Python 정리 (0) | 2023.03.16 |
부스트캠프 AI Tech 5기 코딩 테스트 및 합격 후기 (3) | 2023.03.14 |