我先手动导入了MNIST数据集mat文件,并且输出其中data的二维数组规格,也是正常的,一共有7万张图片数据,每一张图片有784个特征。
X[:,0]
该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据你的代码和输出,X的形状是(784,70000),因此每个样本都是大小为784的一维数组,而不是二维数组。因此,当你尝试将X[0](大小为784)重塑为28×28时,会出现错误,因为它需要有相同数量的元素来重新塑形。实际上,你需要先将X转换为形状为(70000, 784)的二维数组,然后再将每个样本重塑为28×28大小的图像。可以使用以下代码完成此操作:
import numpy as np
import matplotlib.pyplot as plt
import scipy.io
mnist = scipy.io.loadmat('mnist-original.mat')
X = mnist['data']
y = mnist['label']
X_reshaped = np.reshape(X, (70000, 28, 28))
some_digit = X_reshaped[0]
plt.imshow(some_digit, cmap="binary")
plt.axis("off")
plt.show()
首先,使用numpy的reshape()函数将X转换为形状为(70000,28,28)的三维数组。然后,可以像上面那样选择一个图像,将其传递给imshow()函数进行绘制。
不知道你这个问题是否已经解决, 如果还没有解决的话: