如何将像素的 Numpy 线性阵列转换为 Numpy 多维图像阵列

How to convert Numpy Linear Array of pixels to Numpy multi dimensional image array

你好,我有一个问题,其中有像这样的线性像素列表:

[  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 131 131 131 134 134 134 137 137 137 139 139 139 141 141]

我想把它转换成:


[[[  0   0   0]
  [  0   0   0]
  [  0   0   0]
  ...
  [145 145 145]
  [148 148 148]
  [149 149 149]]

像普通的 numpy 图像数组。

感谢您的帮助。

使用带 -1 的 numpy.reshape(),numpy 将尝试自行设置第一个维度。

>>> import numpy
>>> a = numpy.arange(6)
>>> a
array([0, 1, 2, 3, 4, 5])
>>> a.reshape((-1,3))
array([[0, 1, 2],
       [3, 4, 5]])

numpy reshape 正是您要找的。 https://numpy.org/doc/stable/reference/generated/numpy.reshape.html

但是请注意,当您重塑 numpy 数组时,您的新形状必须包含与输入数组相同数量的元素:

import numpy as np

a = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
              131, 131, 131, 134, 134, 134, 137, 137, 137, 139, 139, 139, 141, 141])

print(a.reshape((10, 5)))

因此在您的示例中,您无法将 50 元素数组转换为 3xm 矩阵。