我正在使用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矩阵,我对文本文件的操作导致了错误?
答案 0 :(得分:1)
您得到的错误是因为您将数组提供给show
。 show
只接受一个布尔参数hold=True
或False
要创建图像图,您需要使用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()