Reputation: 757
I need to multiply matrices of different shapes, M and N with a finite size of MxN.
I think an example will make it more clear:
A (shape: 4x4) =
0 3 0 0
0 0 4 0
0 0 0 3
0 0 0 0
B (shape: 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
As a result, I want a matrix of shape (4*7 x 4*7) which means (28 x 28) as follows:
0 3*B 0 0
0 0 4*B 0
0 0 0 3*B
0 0 0 0
where B is still our matrix of shape (7x7) and the 0 represents a block of all zeroes measuring (7x7).
Maybe there is a function with numpy which can do that... but I can't find it.
(just for information, that's for Quantum mechanics)
Upvotes: 2
Views: 134
Reputation: 13459
You're looking for the Kronecker product, np.kron, which is convenient to make block matrices like this:
>>> 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]])
Upvotes: 5