반응형
MNIST 데이터는 손글씨 데이터입니다. train 데이터만 60000장입니다. 이중 원하는 개수를 for 문을 이용하여 화면분할 그래프를 그리는 방법입니다. 코드는 아래와 같습니다.
#필요한 패키지들 불러오기
from torchvision.datasets import MNIST
from torchvision.transforms import ToTensor
import matplotlib.pyplot as plt
#MNIST 데이터 불러오기
training_data=MNIST(root="./",train=True,download=True,transform=ToTensor())
test_data=MNIST(root="./",train=False,download=True,transform=ToTensor())
#그리고 싶은 이미지 개수 설정
num_image=12
#화면 분할 행 수
num_row=4
#화면 분할 열 수
num_col=3
#fig 와 axs 생성
fig, axs = plt.subplots(num_row, num_col, figsize=(2*num_col, 2*num_row))
for i in range(num_image) :
ax=axs[i//num_col , i%num_col]
ax.imshow(training_data[i][0][0], cmap='gray')
ax.set_title('Original')
ax.axis('off')
plt.show()
아래 코드만 자세히 설명하겠습니다. 오늘 사용한 for문의 핵심입니다.
ax=axs[i//num_col , i%num_col]
i//num_col 은 axs의 행의 자리에 들어가 있습니다. //은 나눗셈의 정수부분입니다. i에는 0부터 11까지의 숫자가 들어갑니다. num_col 은 3이므로 각 결과는 아래와 같습니다.
0//3 = 0
1//3 = 0
2//3 = 0
3//3 = 1
4//3 = 1
5//3 = 1
6//3 = 2
7//3 = 2
8//3 = 2
9//3 = 3
10//3 = 4
11//3 = 4
결과를 보면 3이라는 열의 수를 넘어가면 숫자가 하나씩 커집니다. 열이 차면 행이 저절로 하나씩 커지는 코드가 된 것입니다.
이번에는 i%num_col 을 봅시다. axs의 열의 자리에 들어가 있습니다. %s는 나머지 연산입니다. 각 결과는 아래와 같습니다.
0%3 = 0
1%3 = 1
2%3 = 2
3%3 = 0
4%3 = 1
5%3 = 2
6%3 = 0
7%3 = 1
8%3 = 2
9%3 = 0
10%3 = 1
11%3 = 2
0,1,2 라는 열이 반복되는 구조입니다.ㅣ
반응형
'머신러닝을 위한 파이썬 기초 > matplotlib' 카테고리의 다른 글
[파이썬 matplotlib] 산점도 그룹별로 색 다르게 하기 (0) | 2023.09.07 |
---|---|
[파이썬 matplotlib] 그래프 그리는 방법 (fig 와 ax 의 의미 이해하기) (0) | 2023.09.05 |
댓글