我有60000张火车图像作为一个形状矩阵(282860000)带来。这是一个裸体.ndarray。我想把它转换成一个一维图像数组,这意味着每个图像都表示为一行/一组数字,我想要60000个数组。换句话说,我想从(28,28,60000)到(600028*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"]
所以“图像”就是我说的数组。
有人建议我:
“您可能需要更改轴或合并轴,以获得所需的功能。我也建议绘制它们,以防图像横向结束。一定要用好斧头,以免再出现问题。”
我不知道这里指的是什么“轴”,也不知道如何考虑上面所说的。
有人能解释一下我需要做什么和为什么吗?(它的作用)
你可以重塑
train_images
并通过绘制图像来验证它重塑:
绘制图像:
因为这是通过
loadmat
来的,所以(28,28,60000)
的形状是有意义的-MATLAB从最后一个索引开始迭代。重新排序轴,结果是
(60000,28,28)
。最后两个维度可以与整形相结合你需要将28x28图像转置
.T
与MATLAB'
(或.'
)相同。images
也可以是order='F'
。我选择的测试尺寸要小,并且便于区分不同的轴。
在Ipython会话中:
我认为你只需要使用整形:
相关问题 更多 >
编程相关推荐