[딥러닝 Express] Chapter 02. 파이썬과 넘파이 복습 - (1)

배규리·2024년 1월 4일

AI 기초

목록 보기
2/32
post-thumbnail

오늘은 내 주언어 파이썬과 넘파이 복습!
사실 파이썬은 코딩 테스트 준비할 때 계속 써왔었는데 넘파이는 예전에 인공지능 공부했을 때 이후로 첨이당,,😥
다시 시작하니까 빡세게 해봐야지~~~


1. 파이썬이란?

2. 파이썬 설치하기

파이썬

  • 넘파이(Numpy), 판다스(Pandas), 맵플롯립(matplotlib)과 같이 수치 계산이나 통계 처리, 데이터 가공 등에 탁월한 성능을 보이는 라이브러리 무료로 제공.
  • 케라스(Keras), 사이파이(Scipy), 텐서플로(Tensorfloy), 파이토치(Pytorch)와 같은 라이브러리 제공.

넘파이

  • 수치 계산용 라이브러리
  • 각종 수치 해석 알고리즘과 행렬 계산이나 행렬을 조작할 수 있는 편리한 메소드들 포함
  • 이를 이용하여 딥러닝에 필요한 계싼들을 훨씬 쉽고 효율적으로 구현할 수 있다.

맵플롯립

  • 2차원, 3차원 그래프를 그려주는 라이브러리
  • 데이터도 시각적으로 확인이 가능

텐서플로우

  • 구글에서 배포하는 딥러닝 라이브러리

3. 어떤 개발 도구를 사용할 것인가?

인기 있는 라이브러리가 거의 모두 포함된 아나콘다!!!

알게된 점이 있다.

아나콘다에서는 여러 개의 가상 환경을 만들어서 사용할 수 있다.
이 때, 사용자가 개발환경을 선택하면서 사용할 수 있는데, 파이썬과 텐서플로우 간의 버전이 다르면 충돌이 생긴다.

이를 해결하기 위해서는 아래와 같은 과정을 거쳐야 한다.⭐

  1. 아나콘다를 설치하면 base라는 가상환경만 만들어 진다.
  2. Anaconda Prompt(anoconda3)를 실행하여 아래와 같은 명령어를 입력해준다.
    (base) c:\users\missr\deep> conda create -n deep python=3.7
  3. 그러면 deep이라는 이름의 가상환경이 생성된다.

이후에 실습을 위해 아래의 코드도 입력해준다.

(base) c:\users\missr\deep> conda activate deep
(base) c:\users\missr\deep> conda install spyder
(base) c:\users\missr\deep> conda install tensorflow

각각은 deep이라는 가상환경을 활성화해주고,
spyder와 tensorflow 라이브러리를 설치하는 과정이다.

진짜 엄첨나게 오래 걸린다..;;

1시간째 이러고 있는데 이게 맞나..?
내 컴퓨터 문제인걸까ㅠ

결국 아래 방법으로 다시 ..!

(base) c:\users\missr\deep> conda activate deep
(base) c:\users\missr\deep> pip install spyder
(base) c:\users\missr\deep> conda install spyder
(base) c:\users\missr\deep> pip install tensorflow
(base) c:\users\missr\deep> conda install tensorflow

왜 pip으로 먼저 설치하고 conda로 해야 되는걸까..?

검색해봤는데
pip는 python만 한정된 패키지 관리자이고, conda는 python 뿐만 아니라 c, java등에도 포함되는 패키지 관리자라고 한다.


4. 파이썬 복습

5. 딥러닝 개발에 사용되는 라이브러리

라이브러리 이름설명
넘파이(Numpy)효율적인 행렬 연산 라이브러리
맷플롯립(Matplotlib)다양한 그래프를 그리는 라이브러리
사이킷런(Scikit-learn)전통적인 머신러닝 라이브러리
텐서플로우(Tensorflow)딥러닝을 지원하는 라이브러리
케라스(Kears)고수준의 딥러닝 라이브러리
파이토치(Pytorch)페이스북에서 만든 딥러닝 라이브러리
판다스(Pandas)데이터 처리를 위한 라이브러리

그렇다면 해당 라이브러리들을 설치해보자!

(base) c:\users\missr\deep> activate deep
(deep) c:\users\missr\deep> pip install gtts

파이썬에서는 pip 명령어를 사용하여 라이브러리 모듈을 설치하는 것이 가장 쉬운 방법이라고 한다.
여기서 설치한 TTS는 Text To Speech 즉 언어를 말로 바꾸어 주는 라이브러리 모듈이다.

다음과 같은 프로그램을 간단하게 실행해보자~

from gtts import gTTS
tts=gTTS('HELLO')
tts.save('hello.mp3')

작업 디렉토리에 가면 hello.mp3라는 파일이 존재하는 것을 확인할 수 있다! 신기🥹
(신기해서 나한테 인사해주는 것도 만들었다...내 이름을 부른다...ㅎ_ㅎ?!)
업로드중..

반대로 음성을 인식하여 텍스트로 바꾸어주는 라이브러리를 설치해보자.

(deep) c:\users\missr\deep> pip install SpeechRecognition
(deep) c:\users\missr\deep> pip install pyaudio

다음과 같은 예제 프로그램도 실행해보았다.

import speech_recognition as sr

r= = sr.Recognizer()

with sr.Microphone() as source:
	print("마이크로 말해보세요.")
    audio = r.listen(source)
    try:
    	t = r.recognize_google(audio)
        print(f'말한 것이 : {t}인가요?')
    except:
    	print("음성 인식에 실패했습니다.")

6. 넘파이

Numpy(Numerical Python)은 거의 모든 과학 및 공학 분야에서 사용되는 오픈 소스 파이썬 라이브러리이다. Numpy 라이브러리에는 다차원 배열 데이터 구조가 포함되어 있다. 바로 ndarray이다. ndarray는 동질적인 n-차원 배열(n-dimensional array)을 의미한다. 따라서 이는 다양한 수학적 행렬 연산을 수행하는 데 사용할 수 있다.

그럼 기억을 되새기며 실습해보자!

넘파이 포함하기

import numpy as np

배열 생성하기

넘파이 배열을 생성하는 가장 기본적인 방법은 넘파이가 제공하는 array함수에 파이썬 리스트를 전달하는 방법 이다.

a = np.array([1,2,3])
print(a)

아래는 2차원 배열을 생성하는 예시이다.

b = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(b)

업로드중..

넘파이 배열의 속성

속성설명
ndim축의 개수. 2차원 배열이면 ndim은 2이다.
shape배열의 형상. n개의 행과 m개의 열이 있는 경우 shape는 (n, m)이다.
size배열 안에 있는 요소들의 총 개수
dtype배열 요소의 자료형
itemsize배열을 이루는 요소의 크기로서 단위는 바이트이다.
data실제 데이터가 저장되는 메모리 블럭의 개수
print(b.shape) # 배열의 형상
print(b.ndim)
print(b.dtype)
print(b.itemsize)
print(b.size)

업로드중..

1이나 0으로 채워진 배열 생성하기

zeros()는 0으로 가득 채워진 배열
ones()는 1로 가득 채워진 배열
eye()는 대각선 요소만 1인 배열

np.zeros((3,4))
np.ones((3,4), dtype=np.int32)
np.eye(3)

업로드중..

연속되는 값으로 배열 생성하기

np.arange(5)
np.arange(1,6)
np.arange(1,10,2)

업로드중..

균일한 간격의 값으로 배열 생성하기

시작값부터 끝값까지 균일한 간격으로 지정된 개수만큼의 배열을 생성한다.

np.linspace(0,9,10)
np.linspace(0,10,10)

업로드중..

배열 정렬하기

arr = np.array([2,1,5,4,3])
np.sort(arr)

업로드중..

2개의 배열 합치기

vstack()은 두 배열을 세로로 쌓고,
hstack()은 두 배열을 가로로 연결한다.

x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])
print(np.vstack((x,y)))
print(np.hstack((x,y)))

업로드중..

배열을 여러 개의 작은 배열로 분할하기

넘파이 배열을 자르는 메소드는 split()이다.
3X10배열을 3X3과 3X7로 잘라보자.
가로로 자르려면 axis=0, 세로로 자르려면 axis=1이어야 하므로
여기서는 axis=1이어야 한다.

array = np.arange(30).reshape(3,10)
arr1, arr2 = np.split(array, [3], axis=1)
print(arr1)
print(arr2)

업로드중..

배열의 합 쉽게 계산하기

ndarray 클래스의 메소드로 sum(), min(), max()와 같은 것들이 존재한다. 사용해보면 아래와 같다.

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a.sum())
print(a.min())
print(a.max())

업로드중..

특정 행이나 열에 대한 평균값을 계산하기 위해서는 아래와 같이 mean()함수는 axis 값과 함께 넘겨준다.

scores=np.arange(12).reshape(3,4)
print(scores)

print(scores.mean(axis=0))
print(scores.mean(axis=1))

업로드중..

다차원 배열의 평탄화

다차원 배열을 1차원 배열로 만드는 과정이다.

x = np.arange(12).reshape(3,4)
print(x)
print()
print(x.flatten())

업로드중..


사실 뒤에 시각화 라이브러리인 matplotlib를 활용하여 그래프를 그리는 예제도 존재한다!
이번엔 너무 용량이 큰 관계로 다음 velog에 이어서 작성해야겠다.😊
이전에 R을 사용해서 연구실에서 과제 수행했었는데 생각할 수록 머신러닝, 데이터분석 분야에서는 R이랑 Python이 비슷하다는 생각이 든다.🤔
ㅎㅎ 힘내자 화이팅 ~

profile
백엔드 개발은 취미인 AI 개발자🥹

0개의 댓글