【问题标题】:Reshaping numpy 3D array重塑numpy 3D数组
【发布时间】:2016-02-10 21:58:39
【问题描述】:

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

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

到目前为止,我做到了:

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

看起来我得到的是垃圾而不是普通图片。我假设在错误的维度上进行了重塑......??

【问题讨论】:

  • 您需要交换轴,将 73257 维度移动到前面,然后重新整形。
  • @hpaulj 我该怎么做?我对 numpy 不是很熟练。

标签: numpy multidimensional-array 3d reshape


【解决方案1】:

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

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()

【讨论】:

  • 我在想更像data.transpose(2,0,1).reshape(N,32*32) 的东西,但不知道扁平 32x32 部分的顺序是否正确。
猜你喜欢
  • 2017-11-11
  • 2018-03-17
  • 2017-09-18
  • 2020-04-22
  • 2016-05-22
  • 2019-07-10
  • 2021-03-21
  • 2021-10-28
  • 2021-08-06
相关资源
最近更新 更多