numpy 如何合并不同形状的矩阵

pepwfjgg  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(118)

我想知道如何在torch或numpy中将多个具有不同形状的Tensor连接到一个Tensor中。
还有,我想用零填充两个矩阵形状不同的部分
我用这个代码

import numpy as np

n1 = np.array(np.random.rand(1,64,112,112))
n2 = np.array(np.random.rand(1,512,7,7))

np.concatenate((n1,n2))

字符串
但是,我得到了错误

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-395-2f74879dd1d6> in <module>
      4 n2 = np.array(np.random.rand(1,512,7,7))
      5 
----> 6 np.concatenate((n1,n2))

ValueError: all the input array dimensions except for the concatenation axis must match exactly

frebpwbc

frebpwbc1#

不确定是否有更直接的方法,但使用pad填充零以匹配最大形状:

import numpy as np
from itertools import zip_longest

n1 = np.array(np.random.rand(1,64,112,112))
n2 = np.array(np.random.rand(1,512,7,7))

arrays = [n1, n2]

shapes = [n.shape for n in arrays] 

final = np.vstack(shapes).max(axis=0)

out = np.concatenate([np.pad(a, list(zip_longest([0], final-a.shape,
                                                 fillvalue=0)))
                      for a in arrays])

out.shape

字符串
输出形状:(2, 512, 112, 112)

相关问题