본문 바로가기
Boostcamp

[부스트캠프]Numpy정리

by Yonghip 2023. 3. 18.

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은 수없이 검색했던 기억이 있다.)

이번에 몰랐던 부분을 다시 짚고 복습할 수 있는 좋은 기회였던 것 같다.