1. 넘파이
넘파이는 외부 라이브러리입니다. 넘파이 라이브러리를 쓸 수 있도록 가져옵니다.
import numpy as np
파이썬에서는 라이브러리를 읽기 위해서 import 문을 사용합니다. 위에서는 import numpy as np라고 작성했는데, 직역하면 "numpy를 np라는 이름으로 가져와라"가 됩니다. 이렇게 해두면 앞으로 넘파이가 제공하는 메서드를 np를 통해 참조할 수 있습니다.
넘파이 배열
넘파이 배열을 생성할 때는 np.array() 메서드를 이용합니다. np.array()라는 파이썬의 리스트를 인수로 받아 넘파이 라이브러리가 제공하는 특수한 형태의 배열(numpy.ndarray)을 반환합니다.
>>> x = np.array([1,2,3])
>>> print(x)
[1 2 3]
>>> type(x)
<class 'numpy.ndarray'>
아래의 예시로 넘파이 배열로 산술 연산을 수행해보도록 하겠습니다.
>>> x = np.array([1.0,2.0,3.0])
>>> y = np.array([2.0,4.0,6.0])
>>> x + y # 원소별 덧셈
array([3., 6., 9.])
>>> x * y
array([2., 8., 18.])
>>> x / y
array([0.5, 0.5, 0.5])
여기서 주의할 점은 배열 x와 배열 y의 원소 수가 같다는 것입니다. x와 y의 원소 수가 같다면 산술 연산은 각 원소에 대해서 행해집니다. 원소 수가 다르면 오류가 발생합니다.
N차원 배열
넘파이는 1차원 배열뿐만 아니라 다차원 배열도 작성할 수 있습니다. 2차원 배열을 아래의 예시와 같이 살펴보겠습니다.
>>> A = np.array([[1,2],[3,4]])
>>> print(A)
[[1 2]
[3 4]]
>>> A.shape # 행렬의 각 차원의 크기
(2,2)
>>> A.dtype # 행렬에 담긴 원소 자료형
dtype('int64')
2 x 2의 A라는 행렬을 작성했습니다.
>>> B = np.array([[3,0],[0,6]])
>>> A + B
array([[ 4, 2],
[ 3, 10]])
>>> A * B
array([[ 3, 0],
[ 0, 24]])
마찬가지로, n차원 행렬도 행렬의 산술 연산은 원소 수가 같다면, 대응하는 원소별로 계산됩니다.
브로드캐스트
넘파이에는 원소별 계산뿐 아니라 넘파이 배열과 스칼라값의 조합으로 된 산술 연산을 수행할 수 있게 하는, 브로드캐스트 기능이 있습니다. 스칼라값과의 계산이 넘파이 배열의 원소별로 한 번씩 수행됩니다.
>>> print(A)
[[1 2]
[3 4]]
>>> A * 10
array([[ 10, 20],
[ 30, 40]])
2. matplotlib
matplotlib은 그래프를 그려주는 라이브러리입니다. 이를 이용하여 그래프 그리기와 데이터 시각화가 쉬워집니다.
간단한 그래프 그리기
그래프를 그리려면 matplotlib의 pyplot 모듈을 이용합니다. 예시로 sin 함수를 그려보겠습니다.
import numpy as np
import matplotlib.pyplot as plt
# 데이터 준비
x = np.arange(0,6,0.1) # 0에서 6까지 0.1 간격으로 생성
y = np.sin(x)
# 그래프 그리기
plt.plot(x,y)
plt.show()

이 코드에서는 넘파이 arange 메서드로 [0, 0.1, 0.2 ,..., 5.8, 5.9] 라는 데이터를 생성하여 변수 x에 할당했습니다. 그다음 줄에서는 x의 각 원소에 넘파이의 sin 함수인 np.sin()을 적용하여 변수 y에 할당합니다. 이제 x와 y를 인수로 plt.plot 메서드를 호출해 그래프를 그립니다. 마지막으로 plt.show()를 호출해 그래프를 화면에 출력하고 끝납니다. 코드를 실행하면 아래의 그림이 보여집니다.
pyplt의 기능
여기에 cos 함수도 추가로 그려보겠습니다. 추가로, 제목과 각 축의 이름 표시 등, pyplot의 다른 기능도 사용해보겠습니다.
import numpy as np
import matplotlib.pyplot as plt
# 데이터 준비
x = np.arange(0,6,0.1) # 0에서 6까지 0.1 간격으로 생성
y1 = np.sin(x)
y2 = np.cos(x)
# 그래프 그리기
plt.plot(x, y1, label="sin")
plt.plot(x, y2, linestyle="--", label="cos") # cos 함수는 점선으로 그리기
plt.xlabel("x") # x축 이름
plt.ylabel("y") # y축 이름
plt.title('sin & cos') # 제목
plt.show()

이미지 표시하기
pyplot에는 이미지를 표시해주는 메서드인 imshow()도 있습니다. 이미지를 읽어올 때는 matplotlib.image 모듈의 imread() 메서드를 이용합니다 .
import matplotlib.pyplot as plt
from matplotlib.image import imread
img = imread('test.png') # 적절한 경로를 설정하세요
plt.imshow(img)
plt.show()
이 글은 밑바닥부터 시작하는 딥러닝 책을 보며 공부하여 작성한 글입니다.
한빛미디어에서 출간한 '밑바닥부터 시작하는 딥러닝'의 코드를 담고 있습니다.
'딥러닝' 카테고리의 다른 글
| [밑바닥부터 시작하는 딥러닝] Ch 2. 퍼셉트론$(3)$ (0) | 2024.08.08 |
|---|---|
| [밑바닥부터 시작하는 딥러닝] Ch 2. 퍼셉트론$(2)$ (0) | 2024.08.05 |
| [밑바닥부터 시작하는 딥러닝] Ch 2. 퍼셉트론 (0) | 2024.08.04 |
| [밑바닥부터 시작하는 딥러닝] Ch 1. 헬로 파이썬 (0) | 2024.08.02 |