我有一个包含图像中所有像素RGB值的数组。假设图片是4x4大小,该数组大小为48,其中前16个值是红色值,接下来的16个是绿色值,最后16个是蓝色值:
[r0, r1, ..., r15, g0, g1, ..., g15, b0, b1, ..., b14, b15]
现在我想将该数组转换为一个深度为3的4x4矩阵,形式如下:
[[[r0, g0, b0], ..., [r3, g3, b3]],
...
[[r12, g12, b12], ..., [r15, g15, b15]]]
为此,我正在进行一次
reshape
+transpose
+reshape
:import matplotlib.pyplot as plt
N = 4
numpy.random.seed(0)
rrggbb = numpy.random.randint(0, 255, size=N*N*3, dtype='uint8')
imgmatrix = rrggbb.reshape((3, -1)).transpose().reshape((N, N, 3))
plt.imshow(imgmatrix)
plt.show()
有没有更高效/简洁的方法来完成这个任务?(即:少使用重塑/转置操作)