안녕, 세상!

1. Python 심화( Numpy, Matplotlib) 본문

It공부/Deep learning

1. Python 심화( Numpy, Matplotlib)

dev_Lumin 2020. 6. 13. 18:00

넘파이와 matplotlib 등 의 유용한 라이브러리를 사용하기 위해서 아나콘다 배포판을 설치한 후 윈도우 검색기에 anaconda prmopt로 코딩을 하면 됩니다. 

아나콘다 배포판 설치는 python 설치부분에 설명되어 있습니다.

앞으로 사용할 python은 버젼 3 을 사용할 것이기 때문에 아나콘다 배포판도 버젼 3을 다운받아서 사용해야 합니다.

1.넘파이

(1) 불러오기

배열이나 행렬 계산과 관련된 편리한 메서드들이 넘파이의 배열 클래스인 numpy.array에 있습니다.

넘파이는 외부 라이브러리라서 넘파이를 import 함수로 불러야 합니다.

np.array()

넘파이 배열을 만들 때는 np.array() 메서드를 사용합니다.

파이썬의 리스트를 인수로 받아 넘파이 라이브러리가 제공하는 특수한 형태의 배열 numpy.ndarray 을 반환합니다.

 

(2) 산술연산

넘파이 배열로 산술연산이 가능합니다. 

산술연산 할 두 배열은 원소 수가 같아야 합니다.

넘파이 산술연산

하지만 원소별 계산 뿐만 아니라 넘파이 배열과 수치 하나(스칼라값)의 조합으로 된 산술연산도 수행할 수 있습니다.

이 기능을 브로드캐스트 라고 합니다.

 

일반배열같은 경우 배열 끼리 덧셈을 하면 원소끼리 연산이 되지 않고 원소들을 추가로 붙입니다.

 

 

(3) N차원 배열

넘파이는 리스트와 같이 다차원 배열을 작성할 수 있습니다.

2차원 넘파이 예시

shape 함수 - 행렬의 형상을 보여줍니다.

                  형식 : 변수.shape

                  1차원 배열인 경우에 shape 함수는 배열의 원소의 수만 보여주고 

                  2차원 이상의 배열인 경우에는 (행,열) 형태로 숫자를 출력합니다.

shape 함수 출력 형식

 

(4) 원소 접근

넘파이 배열의 원소의 위치에 접근해서 해당 원소를 출력할 수 있습니다.

넘파이 원소접근

 

(5) 기타

flatten() 함수 - 해당 변수의 배열을 1차원 배열로 변환합니다 (평탄화 시킴)

                     형식 : 변수.flatten() 

a가 2차원배열 [[1,2],[3,4],[5,6]]일 경우

a[np.array([0,1,2])]  # a의 넘파이 배열 중 인덱스가 0,1,2인 원소를 얻기

 

 

 

matmul() 함수 - 행렬의 곱을 실행시키는 함수입니다.

                      np.dot()함수도 행렬곱과 같은 결과를 반환하지만 np.dot()은 백터의 내적의 기능입니다.

 

내적을 사용하게 된다면 시그마를 for문 대신 사용할 수 있습니다.

그리고 이 방법이 계산 처리가 빠릅니다.

예를 들어 1부터 1000까지의 합을 for문이 아닌 내적으로 표현하면 다음과 같습니다.

 

 

 

 

2.matplotlib

그래프를 그리기위한 라이브러리입니다.

 

matplotlib을 그래프로 시각화 하는데 위의 anaconda prompt로는 시각화가 되지 않기 때문에 anaconda를 설치할 때 

같이 설치가 되는 Jupyter Notebook을 사용 할 것입니다.

 

(1) Jupyter Notebook 사용법 

1. 윈도우 검색창에 'jupyter' 검색 후 클릭합니다.

2. 콘솔 창에서 나오는 주소를 브라우져 창 주소에 복붙을 합니다.

빨간 부분 복붙하기

3. Jupyter 페이지에서 file 카테고리에서 new부분을 python3 으로 바꿉니다.

4. 그 다음에 나오는 창에서 코드를 입력해서 코딩을 하면 됩니다.

 

 

(2) pyplot의 기능

 

우선 sin함수를 그리는 코드를 봅니다.

matplotlib 도 numpy와 마찬가지로 외부의 라이브러리 이므로 import 함수로 불러옵니다.

 

arange() 함수(Numpy) - 설정 범위의 설정 간격 만큼의 숫자를 원소로 Numpy 배열을 만듬

                   형식: 변수.arange(시작숫자, 끝숫자, 숫자범위의 간격)

 

plt.plot() 함수 - 그래프를 구축함

                   

plt.show() 함수 - 그래프를 화면에 출력

 

 

 

 

sin과 cos 함수 그래프 출력

label - 뜻 그대로 꼬리표로, 해당 그래프의 이름을 설정함

 

color - 해당 그래프의 색깔을 설정함

Char Color
'w' White
'k' Black
'b' Blue
'r' Red
'g' Green
'c' Cyan
'y' Yellow
'm' Magenta

 

 

linestyle - 그래프의 선 종류를 설정함

 

plt.xlabel(), plt.ylabel() - x축과 y축의 이름을 설정함

 

plt.title() - 그래프의 이름을 설정함

 

plt.legend() - 그래프를 여러개 그릴 때 그래프에 label을 설정하고 그래프 특정위치에 그래프의 label을 표현해줌

                    loc으로 위치 표현 

string code string  code
'upper right' 1 'center right'  7
'upper left' 2 'lower center' 8
'lower left' 3 'upper center' 9
'lower right' 4 'center' 10
'right' 5 'best' 0
'center left' 6    

 

plt.subplot() - 여러개의 그래프표를 그릴 때 사용함 

                   형식: plt.subplot(세로의 그래프 갯수, 가로의 그래프 갯수, 그래프 위치)

그래프의 위치는 아래표가 화면이라고 할 때 해당 위치의 숫자를 표현한 것이다.

1 2
3 4
5 6

subplot활용1

 

subplot 활용2

 

 

이미지 표현하기

matplotlib.image

 

이미지 가져오기

위와 같이 사진을 가져올려면 해당 경로에 이미지 파일을 저장해 놓아야 합니다.

 

imread() - 해당경로의 사진을 가져옴

 

plt.imshow() - 이미지를 구축함

 

 

 

'It공부 > Deep learning' 카테고리의 다른 글

5. 오차역전파법  (0) 2020.06.19
4. 신경망 학습  (0) 2020.06.17
3-(1) 손글씨 숫자 인식 분석  (1) 2020.06.16
3. 신경망  (0) 2020.06.16
2. 퍼셉트론  (0) 2020.06.15
Comments