如何将一个矩阵插入另一个矩阵

时间:2020-02-20 13:34:19

标签: python matrix

我正在尝试创建一个函数以在另一个(方矩阵)中插入矩阵,例如:

A = [(1,2,3),(4,5,6),(7,8,9)]
B = [(2,4),(6,8)]

C = funcmatrix(A,B)

result: [1 2 3 0 0
         4 5 6 0 0
         7 8 9 0 0
         0 0 0 2 4
         0 0 0 6 8]  

3 个答案:

答案 0 :(得分:1)

import numpy as np

A = np.array([(1,2,3),(4,5,6),(7,8,9)])
B = np.array([(2,4),(6,8)])

combined = np.block([[A, np.zeros((len(A), len(B)))], 
                     [np.zeros((len(B), len(A))), B]])

出局:

array([[1., 2., 3., 0., 0.],
       [4., 5., 6., 0., 0.],
       [7., 8., 9., 0., 0.],
       [0., 0., 0., 2., 4.],
       [0., 0., 0., 6., 8.]])

请参阅docs

答案 1 :(得分:0)

我发现使用numpy的另一种方法:

A = np.array([[1,2,3],[4,5,6],[7,8,9]])
B = np.array([[2,4],[6,8]])
bshape = B.shape
ashape = A.shape

a=np.append(A,np.zeros((bshape[0],ashape[0])),axis=0)
b=np.append(np.zeros((ashape[0],bshape[0])),B,axis=0)

现在将它们附加在一起:

np.append(a,b,axis=-1)

我希望这能解决您的情况

答案 2 :(得分:0)

根据菌群学的评论,block_diag应该可以解决问题:

A = [(1,2,3),(4,5,6),(7,8,9)]
B = [(2,4),(6,8)]

import numpy as np
from scipy.linalg import block_diag

block_diag(np.array(A), np.array(B))

给予:

array([[1, 2, 3, 0, 0],
       [4, 5, 6, 0, 0],
       [7, 8, 9, 0, 0],
       [0, 0, 0, 2, 4],
       [0, 0, 0, 6, 8]])