重塑 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()
我有一个维度为 (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()