Mnist数据的图像Python - 显示图像时出错

时间:2017-11-22 17:50:00

标签: python matplotlib mnist

我正在使用Mnist数据集,以了解机器学习,现在我试图将Mnist数据集中的第一个数字显示为图像,我遇到了一个问题。

我有一个尺寸为784x10000的矩阵,其中每列是数据集中的一个数字。我自己创建了矩阵,因为Mnist数据集以文本文件的形式出现,这本身就给我带来了很多问题,但这本身就是一个问题。

下面的MN_train矩阵是我的大型784x10000矩阵。所以我在下面尝试做的是填充28x28矩阵,以显示我的图像。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

grey = np.zeros(shape=(28,28))
k = 0

for l in range(28):
    for p in range(28):
        grey[p,l]=MN_train[k,0]
        k = k + 1
print grey
plt.show(grey) 

但是当我尝试显示图像时,出现以下错误:

具有多个元素的数组的真值是不明确的。使用a.any()或a.all()

其次是一张看起来不像五号的图像,正如我所料。

有没有我忽略的东西,或者这是否告诉我,为了构建MN_train矩阵,我对文本文件的操作导致了错误?

1 个答案:

答案 0 :(得分:1)

您得到的错误是因为您将数组提供给showshow只接受一个布尔参数hold=TrueFalse 要创建图像图,您需要使用imshow

plt.imshow(grey)
plt.show()  # <- no argument here

另请注意,循环效率很低。您可以只重塑输入列数组。

完整的代码看起来像

import numpy as np
import matplotlib.pyplot as plt

MN_train = np.loadtxt( ... )

grey = MN_train[:,0].reshape((28,28))

plt.imshow(grey)
plt.show()