按块乘以矩阵

Aga*_*'lo 2 python numpy matrix python-2.7

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

我想一个例子会更清楚:

A(形状:4x4)=

0  3  0  0  
0  0  4  0  
0  0  0  3  
0  0  0  0
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

结果,我想要一个形状矩阵(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
Run Code Online (Sandbox Code Playgroud)

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

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

(仅供参考,适用于量子力学)

Oli*_* W. 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]])
Run Code Online (Sandbox Code Playgroud)