如何将像素的 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
矩阵。
你好,我有一个问题,其中有像这样的线性像素列表:
[ 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
矩阵。