重塑numpy 3D阵列

重塑numpy 3D阵列,numpy,multidimensional-array,3d,reshape,Numpy,Multidimensional Array,3d,Reshape,我有一个维度为:(32,3273257)的数据集,其中32x32是单个图像的像素 我该如何将其重塑为(732571024),以便将每个图像展开成一行 到目前为止,我做到了: self.train_data = self.train_data.reshape(n_training_examples, number_of_pixels*number_of_pixels) 看起来我得到的是垃圾而不是普通的照片。我假设整形是在错误的尺寸上进行的 按照评论中的建议,首先获取列中的每个图像,然后转置: s

我有一个维度为:(32,3273257)的数据集,其中32x32是单个图像的像素

我该如何将其重塑为(732571024),以便将每个图像展开成一行

到目前为止,我做到了:

self.train_data = self.train_data.reshape(n_training_examples, number_of_pixels*number_of_pixels)

看起来我得到的是垃圾而不是普通的照片。我假设整形是在错误的尺寸上进行的

按照评论中的建议,首先获取列中的每个图像,然后转置:

self.train_data = self.train_data.reshape(-1, n_training_examples).T
这些操作都不会改变阵列的内存布局,因此任何图像的两个连续像素将相隔73257字节(假设是
uint8
image),如果您希望一次处理一个图像,这可能不是最好的选择。您需要计时并验证这一点,但创建阵列副本可能会在性能方面带来优势:

self.train_data = self.train_data.reshape(-1, n_training_examples).T.copy()

您需要交换轴,将73257尺寸移动到前面,然后重塑形状。@hpaulj我该怎么做?我对numpy不太精通。我想的更像是
数据。转置(2,0,1)。重塑(N,32*32)
,但不知道展平32x32部分的顺序是否正确。