按块乘以矩阵

时间:2016-06-16 22:07:53

标签: python python-2.7 numpy matrix

我需要将不同形状的矩阵,M和N与有限大小的MxN相乘。

我认为一个例子会更清楚:

A(形状:4x4)=

0  3  0  0  
0  0  4  0  
0  0  0  3  
0  0  0  0

B(形状:7x7)=

3  0  0  0  0  0  0
0  2  0  0  0  0  0
0  0  1  0  0  0  0
0  0  0  0  0  0  0
0  0  0  0  -1  0  0
0  0  0  0  0  -2  0
0  0  0  0  0  0  -3

结果,我想要一个形状矩阵(4 * 7 x 4 * 7),这意味着(28 x 28)如下:

0  3*B  0  0  
0  0  4*B  0  
0  0  0  3*B  
0  0  0  0

其中B仍然是我们的形状矩阵(7x7),0代表一个全零的块(7x7)。

也许有一个numpy的功能可以做到这一点......但我找不到它。

(仅供参考,量子力学的信息)

1 个答案:

答案 0 :(得分:5)

您正在寻找Kronecker产品np.kron,这样可以方便地制作这样的块矩阵:

>>> A = np.array([[1, 2], [0, 1]])
>>> B = np.array([[1, 2, 3], [0, 1, 3], [0,0,0]])
>>> np.kron(A,B)
array([[1, 2, 3, 2, 4, 6],
       [0, 1, 3, 0, 2, 6],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 1, 2, 3],
       [0, 0, 0, 0, 1, 3],
       [0, 0, 0, 0, 0, 0]])