重塑numpy 3D阵列

时间:2015-11-10 04:37:15

标签: numpy multidimensional-array 3d reshape

我有一个尺寸为的数据集:(32,32,73257),其中32x32是单个图像的像素。

如何将其重塑为(73257,1024),以便每个图像连续展开?

到目前为止,我做了:

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

看起来我有垃圾而不是普通照片。我假设重塑是在错误的维度上进行的......

1 个答案:

答案 0 :(得分:1)

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

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

任何这些操作都不会改变数组的内存布局,因此任何图像的两个连续像素将相隔73257个字节(假设uint8图像),这可能不是最好的选项如果您想一次处理一个图像的数据。您需要对此进行计时和验证,但创建阵列的副本可能在性能方面具有优势:

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