首先,我的需求是这样,这是一个矩阵a,长这样(4,4):
矩阵b,长这样(3,3):
我要把它们斜着拼接起来,并把空缺的地方补上零,也就是这样:
话不多说,上代码:
def adjConcat(a, b):
'''
将a,b两个矩阵沿对角线方向斜着合并,空余处补零[a,0.0,b]
得到a和b的维度,先将a和b*a的零矩阵按行(竖着)合并得到c,再将a*b的零矩阵和b按行合并得到d
将c和d横向合并
'''
lena = len(a)
lenb = len(b)
left = np.row_stack((a, np.zeros((lenb, lena)))) # 先将a和一个len(b)*len(a)的零矩阵垂直拼接,得到左半边
right = np.row_stack((np.zeros((lena, lenb)), b)) # 再将一个len(a)*len(b)的零矩阵和b垂直拼接,得到右半边
result = np.hstack((left, right)) # 将左右矩阵水平拼接
return result
说明:垂直拼接也可以用np.vstack()函数。该函数适应任意两个矩阵的沿对角线拼接。