강의자료/머신러닝

[딥러닝파이썬] 01-2.파이썬의 numpy를 다뤄 보자.

파아란기쁨 2022. 4. 8. 18:17

 

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 의 기본 문법들을 정리해 보았습니다.

 

더욱 자세한 내용은 데이터 사이언스 스쿨을 참고하시면 많은 정보를 얻으 실 수 있을것 같습니다.

 

[참고]

https://datascienceschool.net/intro.html

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기