我需要将不同形状的矩阵,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的功能可以做到这一点......但我找不到它。
(仅供参考,量子力学的信息)
答案 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]])