将批处理矩阵(3d数组,每个矩阵都是图像)重塑为2d(图像网格)

时间:2019-03-16 02:25:09

标签: numpy numpy-einsum

假设我们有一个3d数组A.shape = (100, 5, 5),每个小矩阵(5,5)都是一幅图像,现在我想将此3d数组整形为图像B.shape=(50,50)的正方形网格,这样图像以10 * 10网格布局。

我可以使用np.stack种工具来做到这一点,但我想知道是否可以使用np.einsum来做到这一点?

2 个答案:

答案 0 :(得分:1)

哦,我想我只是想通了

Pig

答案 1 :(得分:1)

有两种简单的解决方案。您的及其“移置”:

示例:

>>> ABCD.shape
(4, 41, 27)
>>> AC_BD = np.einsum('jik', ABCD.reshape(2, 82, 27)).reshape(82, 54)
>>> AB_CD = np.einsum('ikjl', ABCD.reshape(2, 2, 41, 27)).reshape(82, 54)
>>> Image.fromarray(AC_BD).show()
>>> Image.fromarray(AB_CD).show()

enter image description here enter image description here