标签: numpy numpy-einsum
假设我们有一个3d数组A.shape = (100, 5, 5),每个小矩阵(5,5)都是一幅图像,现在我想将此3d数组整形为图像B.shape=(50,50)的正方形网格,这样图像以10 * 10网格布局。
A.shape = (100, 5, 5)
(5,5)
B.shape=(50,50)
我可以使用np.stack种工具来做到这一点,但我想知道是否可以使用np.einsum来做到这一点?
np.stack
np.einsum
答案 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()