我有一个尺寸为的数据集:(32,32,73257),其中32x32是单个图像的像素。
如何将其重塑为(73257,1024),以便每个图像连续展开?
到目前为止,我做了:
self.train_data = self.train_data.reshape(n_training_examples, number_of_pixels*number_of_pixels)
看起来我有垃圾而不是普通照片。我假设重塑是在错误的维度上进行的......
答案 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()