[머신러닝]numpy 기초

김민주·2024년 11월 26일
2

numpy 기초

각 array의 차원을 확인

ndarray.dim

array내 데이터값의 타입 변경

astype()

array 차원과 크기 변경

reshape()

reshape에 -1 인자 사용

array1 = np.arange(10)
array2 = array1.reshape(-1, 5)
array3 = array1.reshape(5, -1)
print(array2.shape)
print(array3.shape)

(2, 5)
(5, 2)

-1 인자는 고정된 n개의 row, col에 맞는 값을 고정으로 갖고 나머지들을 배치

따라서
10개의 인자를 나눌 수 없는 (4,-1)은 오류 발생

tolist()

메서드를 이용해서 리스트로 변환

indexing

단일 값 추출

[-1]
맨 뒤의 데이터 값

[-2] ... 뒤에서 2번째, [-3]...

슬라이싱

: 기호로 슬라이싱

:3 (=0:3)
0~2번째

3:
3번째부터 끝까지

:
처음부터 끝까지

2차원에서도 당연히 가능

팬시 인덱싱

리스트나 ndarray로 인덱스 집합을 지정하면 해당 위치의 인덱스에 해당하는 ndarray를 반환

[[0,1], 2]
row: [0, 1]
col: 2
row에서 col 값인 2에서 반환해라

->(0,2),(1,2)


[[0,1],0:2]
((0,0), (0,1)),((1,0),(1,1)) 인덱싱 적용
row[0,1] 에서 col 0, 1, 2 반환해라

-> [[1,2],[4, 5]]


불린 인덱싱

for문을 돌리지 않고 참 거짓 값 분리 가능

array1d = np.arange(start=1, stop=10)
array3 = array1d[array1d>5]
print('array1d > 5 boolean indexing: ', array3)

array1d > 5 boolean indexing: [6, 7, 8, 9]

array1d > 5

array([False, False, False, False, False, True, True, True, True])
bool값 출력

array3 = array1d[boolean_index]

[6, 7, 8, 9]
Ture값인 것들만 출력해서 array3에 넣음

행렬의 정렬

행렬정렬

np.sort(): 원본 행렬 변경하지 않음
ndarray.sort(): 원본 행렬 자체를 정렬한 값으로 반환

::-1 인자 사용하면 내림차순

np.argsort()

정렬된 행렬 인덱스 값

행렬 내적

np.dot()

행렬끼리 내적

너무 당연한 말이지만 왼쪽 행렬의 열 개수와 오른쪽 행렬의 행 개수가 같아야 오류 안남

차원 축소 중 하나인 PCA 주성분 분석에서 주로 사용

transpose()

전치행렬 가능

profile
mingdue02

0개의 댓글