Numpy의 Shape 다루기 |
Shape를 다루는 것이 중요한 이유는 딥러닝을 실습하게 되면서 딥러닝 라이브러리에서 입력받는 모양의 차원이 각각 틀린데 이때 데이터 형태를 맞춰 주는 것이 중요합니다.
Numpy 의 reshape
reshape 는 Array의 모양을 변경합니다. (데이터 갯수는 동일함)
예)
[[1,2],[3,4]] => [1,2,3,4]
(2,2) => (4,)
import numpy as np
arr = np.array([[1,2],[3,4]],float)
print(arr.shape)
arr = arr.reshape(4,)
print(arr)
print(arr.shape)
arr = arr.reshape(-1)
위와 같이 reshape 안에 (-1) 값을 넣는 경우 size를 기반으로 개수를 선정하는 의미로 사용된다.
출력해 보면 같은 값이 출력 되는 것을 확인 할 수 있다.
Numpy의 Flatten
flatten은 다차원 array를 1차원 array로 변환 해 주는 함수입니다.
import numpy as np
arr = np.array([[1,2],[3,4]],float)
arr = arr.flatten()
print(arr)
인덱싱 |
- 이차원 리스트 0행 0열을 접근시 arr[0][0] 과 같이 접근 => Numpy 에서는 arr[0,0] 과 같이 접근
import numpy as np
arr = np.array([[1,2],[3,4]],float)
print(arr[0,0])
arr[0,0]=12 #0행 0열에 12 대입
print(arr)
슬라이싱 |
- 리스트와 탈리 행과 열 부분을 나누어서 슬라이싱이 가능함 따라서 matrix의 부분 집합을 추출할때 유용함
import numpy as np
arr = np.array([[1,2,3],[3,4,5]],float)
print(arr[:,:2]) #전체행의 0~1 열을 슬라이싱
import numpy as np
arr = np.array([[1,2,3],[3,4,5]],float)
print(arr[1,1:]) #1행 1열부터 슬라이싱
import numpy as np
arr = np.array([[1,2,3],[3,4,5]],float)
print(arr[1:,1:]) #1행부터 1열부터 슬라이싱
여기서 같은 값이더라도 1행을 선택한 경우 1차원의 값을 가지게 되고 1행부터 인 경우는 2차원의 값을 가지게 된다.
import numpy as np
arr = np.array([[1,2,3],[3,4,5]],float)
print(arr[:,-1]) #마지막열을 출력
import numpy as np
arr = np.array([[1,2,3],[3,4,5]],float)
print(arr[:,::2]) #열을 2개씩 건너뛰어 출력
arange |
- array의 범위를 지정하여 값의 list를 생성하는 명령어
import numpy as np
arr=np.arange(10)
print(arr)
※ 리스트의 range 와 같은 개념
import numpy as np
arr=np.arange(1,5,0.5)#시작,끝,step
print(arr)
- 스텝을 0.5씩 실수형으로도 가능하다.
import numpy as np
arr=np.arange(1,5,0.5).reshape(2,4)
print(arr)
- reshape 를 이용하여 이차원 모양으로도 생성 가능
zeros,ones,empty |
- zeros 0으로 채워진 ndarray 생성
- np.zeros(shape,dtype,order) 형태로 호출
import numpy as np
arr=np.zeros(shape=(10),dtype=np.int8)
print(arr)
import numpy as np
arr=np.zeros((2,5))
print(arr)
- ones 1로 채워진 ndarray 생성
import numpy as np
arr=np.ones(10)
print(arr)
import numpy as np
arr=np.ones((2,5))
print(arr)
- empty 메모리만 할당하고 비어있는 ndarray 생성 (단, 메모리가 초기화 되지 않음)
import numpy as np
arr=np.empty(10)
print(arr)
그 이전의 메모리값이 조회된다.
zeros_like,ones_like |
- zeros_like 는 이전 배열 형태를 유지하면서 0으로 채운 배열을 생성
- ones_like는 이전 배열 형태를 유지하면서 1으로 채운 배열을 생성
import numpy as np
arr=np.zeros(shape=(10,),dtype=np.int8)
print(arr)
brr=np.ones_like(arr)
print(brr)
identity |
-identity : 단위행렬 생성
import numpy as np
arr=np.identity(3)
print(arr)
eye |
-eye : 대각선이 1인 행렬 생성 np.eye(n,m,k) 에서 n은 행,m은 열,k는 시작 위치
import numpy as np
arr=np.eye(3,5)
print(arr)
arr=np.eye(3,5,2)
print(arr)
k가 2인 경우 2열부터 1일 생성되는 것을 확인할 수 있다.
이 문서는 학생들과 함께 딥러닝 공부를 하기 위해 만든 문서이며~
딥러닝 공부 전에 Numpy와 Pandas 의 기본을 알고 머신러닝을 공부하면 대부분의 머신러닝 소스코드들을 바라보는데 이해의 폭이 넓어질 것 같아서 이론 후 실습 전에 Numpy와 Pandas 의 기본 문법들을 정리해 보았습니다.
더욱 자세한 내용은 데이터 사이언스 스쿨을 참고하시면 많은 정보를 얻으 실 수 있을것 같습니다.
[참고]
'강의자료 > 머신러닝' 카테고리의 다른 글
[딥러닝파이썬] 01-4.파이썬의 numpy를 다뤄 보자. (5) | 2022.04.25 |
---|---|
[딥러닝파이썬] 01-3.파이썬의 numpy를 다뤄 보자. (11) | 2022.04.18 |
[딥러닝파이썬] 01-1.파이썬의 numpy를 다뤄 보자 (10) | 2022.04.01 |
[딥러닝파이썬]문자열의 유사성 판단하기 (6) | 2022.03.28 |
[딥러닝파이썬]선형대수의 벡터와 행렬을 파이썬으로 표현 (13) | 2022.03.22 |