重塑 numpy 3D 数组

Reshaping numpy 3D array

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

如何将它重新整形为 (73257, 1024) 以便每张图片都展开成一行?

到目前为止,我做了:

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 图像),这可能不是最好的如果您想一次处理一张图像的数据,请选择这些选项。您将需要时间和验证这一点,但创建数组的副本可能证明在性能方面有利:

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