2017-12-08 1 views
0

나는 mnist 데이터 세트로 작업 중이며 한 번에 일부 숫자를 플롯하려고합니다. 이 데이터 세트는 나에게 모양이 (784,) 인 배열을 제공하며 28x28 픽셀의 이미지를 나타냅니다.MNIST의 배열 변경

2x2 격자에 4 개의 숫자를 그려 넣고 싶다고합시다. 이 격자 모양은 (2*28, 2*28)이어야합니다.

zero # an array from the mnist dataset 
nine # another array from the mnist dataset 

zero.shape 
#(784,) 
nine.shape 
#(784,) 

x = np.stack([zero, nine, zero, nine]) 
x.shape 
# (4, 784) 

imshow(x.reshape(2*28, 2*28)) 
show() 

이것은 내가 무엇을 얻을 :이 여기에 내 코드입니다

+---+---+ 
| 0 | 9 | 
+---+---+ 
| 9 | 0 | 
+---+---+ 

: 이것은 내가 원하는 결과 enter image description here

답변

1

을 문제는 방법을 당신 배열을 쌓은 다음 다시 모양을 바꿉니다. Numpy는 행 단위로 배열을 변형합니다. 코드가 무엇을

Layout after using stack

upper_layer = np.append(zero.reshape(28, 28), nine.reshape(28, 28), axis=1) 
lower_layer = np.append(nine.reshape(28, 28), zero.reshape(28, 28), axis=1) 

layout = np.stack([upper_layer, lower_layer]) 
plt.imshow(layout.reshape(2*28, 2*28)) 
가 (필자는 MNIST 데이터에 빠르게 접근하지 않았기 때문에 나는 무작위로 NP 배열을 생성 사용했다) : 다음 코드는 당신이 원하는 것을 얻을 수 :

매우주의 깊게 살펴보면 나란히 나타나는 두 개의 0은 동일하지 않습니다. 첫 번째 28 픽셀은 zero 배열의 첫 번째 행입니다. 같은 행에있는 다음은 zero 배열의 두 번째 행입니다. 따라서 첫 번째 (왼쪽) 픽셀이 짝수 번째 픽셀 행 (0부터 시작하는 인덱스)이고 오른쪽이 모든 홀수 번째 픽셀 행인 두 개의 0을 나란히 렌더링합니다. 는 단일 (1x56) 행으로 두 원 (1x28) 행 렌더링 때문에

reshaped = np.stack([zero, nine, zero, nine]).reshape(2*28, 2*28) 
plt.imshow(reshaped) 
청색 값만을 위에서 y 축 14 도달 방법

enter image description here

통지는이다.

+0

아, 설명 주셔서 대단히 감사합니다. 이제 나에게 의미가있다. –