我有 60000 个 train_images 作为形状 (28,28,60000) 矩阵引入。它是一个 numpy.ndarray。我想将它转换为一维图像数组,这意味着每个图像都表示为单行/数字数组,我想要 60000 个数组。换句话说,我想从 (28, 28, 60000) 到 (60000, 28*28)。在 python 中,它将是:
images_features = []
for image in images:
imageLine = []
for y in range(len(image)):
for x in range(len(image[0])):
imageLine.append(image[y][x])
images_features.append(imageLine)
我怎样才能做到这一点?我怀疑我需要使用重塑,但我不知道我该怎么做。
这就是我获取图像的方式:
data = scipy.io.loadmat('train.mat')
images = data["train_images"]
所以“图像”是我正在谈论的数组。
有人向我建议:
“您可能需要更改轴或组合它们才能获得所需的功能。我建议也绘制它们以防图像横向结束。确保您勤于使用轴以避免那里出现更多问题。”
我不知道这里指的是什么“轴”,也不知道如何考虑上面所说的内容。
有人可以解释我需要做什么以及为什么吗? (它能做什么)
原文由 ajfbiw.s 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于这是来自
loadmat
,形状(28,28,60000)
是有道理的 - MATLAB 从最后一个索引开始迭代。重新排序轴,所以结果是
(60000,28,28)
。最后两个维度可以结合重塑许多人需要转置 28x28 图像,例如
.T
与 MATLAB'
(或.'
)相同。images
也可能是order='F'
。我选择了较小的测试尺寸,以便于区分不同的轴。
在 Ipython 会话中: