1> ndarray 소개
# ndarray: N 차원(Dimension) 배열 (Array) 객체
1차원 [1,2,3,4]
2차원 1차원을 요소로 가짐 [[1,2,3,4],[5,6,7,8]]
3차원 2차원을 요소로 가짐
# ndarray 생성
np.array() 함수로 생성
인자로 주로 파이썬 list 또는 ndarray입력
import numpy as np
array1 = np.array([1,2,3])
# ndarray 형태(shape)와 차원
형태는 ndarray.shape 속성으로, 차원은 ndarray.ndim 속성으로 알 수 있음
[[1,2,3],[4,5,6]]의 shape는 (2,3)임 (행,열)
[1,2,3]의 shape는 (3,)
# ndarray 타입(type)
숫자 값, 문자열 값, 불 값 등 모두 가능
숫자형 - int형(8bit, 16bit, 32bit), unsigned int형(8bit, 16bit, 32bit), float형(16bit, 32bit, 64bit, 128bit), complex타입(더 큰 숫자값)
ndarray 내의 데이터타입은 한가지만 가능
ndarray.dtype 함수로 확인 가능
np.array([1, 0.9])으로 할 경우 더 큰 값인 float가 됨
# ndarray type 변환 - 대용량 데이터 다룰 시 메모리 절약을 위해 형변환을 고려함
astype() 이용
arrayId = [1.0, 2.0]
arrayId_int = arrayId.astype("int32") arrayId.astype(np.int32)
2> numpy ndarray의 axis 축 이해
# ndarray의 axis 축
ndarray의 shape는 행, 열, 높이 단위가 아닌 axis 단위로 부여됨. Shape(axis0,axis1,axis2,....)
3> ndarray 초기화 방법과 ndarray차원과 크기를 변경하는 reshape()의 이해
# ndarray를 편리하게 생성하기 - arange, zeros, ones
np.arange(10) => [0,1,2,3,4,5,6,7,8,9]
np.arange(start=1,stop=10) => [1,2,3,4,5,6,7,8,9]
np.zeros((3,2),dtype = 'int32') => [[0,0],[0,0],[0,0]]
np.ones((3,2)) => [[1.,1.],[1.,1.],[1.,1.]] // dtype을 안적어주면 기본 float64
# ndarray의 차원과 크기를 변경하는 reshape()
reshape(2,5) // reshape((2,5))도 가능
reshape(-1,x) -1에 해당하는 크기는 가변적, x에 해당하는 axis 크기는 x로 고정 x가 안나눠떨어지면 오류
reshape(-1,) 1차원으로 변환
4> ndarray 인덱싱(Indexing)의 이해
# ndarray의 데이터 세트 선택하기 - 인덱싱(Indexing)
1) 특정 위치의 단일값 추출
array[3] array[-1]- 역순으로 1번 array[0,0]
2) 슬라이싱 (Slicing)
array[0:3]- 0에서부터 3개 array[:] -전체 array[1:2,0:3]-행이 1부터 2개 열이 0부터 3개
3) 팬시 인덱싱 (Fancy Indexing) - 인덱스 집합을 지정 - 해당 인덱스에 해당하는 ndarray를 반환
array=[1,2,3,4,5,6,7,8,9]
array1[[2,4,7]]= [3,5,8]
array2d= [[1,2,3],[4,5,6],[7,8,9]] arrat2d[ [0,1], 2] = [3,6]
4) 불린 인덱싱 (Boolean Indexing) - 조건 true값만 반환
array[array>5]
5> ndarray의 sort와 argsort
# 배열의 정렬 - sort() 와 argsort()
1) sort()
new = np.sort(ndarray) : 인자로 들어온 원 행렬은 그대로 유지한 채 원 행렬의 정렬된 행렬을 반환
ndarray.sort()는 원 행렬 자체를 정렬한 형태로 변환하며 반환 값은 none
둘다 기본적으로 오름차순 , 내림차순은 [::-1]
np.sort()[::-1]
* 2차원 배열에서 axis 기반의 sort()
np.sort(A.axis=0) np.sort(A.axis=1) // axis=0일땐 열끼리 axis=1일땐 행끼리 정렬
2) argsort() - 원본 행렬 정렬 시 정렬된 원래 인덱스를 필요로 할 때 원본 행렬 인덱스를 반환
array = [3,1,9,5] np.argsort(array) = [1,0,3,2]
* key-value로 많이 쓰임
import numpy as np
name_array = np.array(['John', 'Mike', 'Sarah', 'Kate', 'Samuel'])
score_array= np.array([78, 95, 84, 98, 88])
sort_indices_asc = np.argsort(score_array)
print('성적 오름차순 정렬 시 score_array의 인덱스:', sort_indices_asc)
print('성적 오름차순으로 name_array의 이름 출력:', name_array[sort_indices_asc])
// 결과 : 성적 오름차순으로 name_array의 이름 출력: John, Sarah, Samuel, Mike, Kate
6> ndarray의 내적과 전치행렬
# 선형대수 연산 - 행렬 내적
np.dot(A,B)
# 선형대수 연산 - 전치 행렬
np.transpose(A) - 행과 열을 바꿈
'파이썬 > 파이썬 머신러닝 완벽 가이드' 카테고리의 다른 글
파이썬 기반의 머신러닝과 생태계 이해 (0) | 2023.02.04 |
---|