2016-06-16 14 views
2

Ich muss Matrizen verschiedener Formen, M und N mit einer endlichen Größe von MxN multiplizieren.Multiplizieren von Matrizen mit Block

Ich denke, ein Beispiel es klarer machen:

A (Form: 4x4) =

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

B (Form: 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 

Als Ergebnis Ich möchte eine Matrix der Form (4 * 7 x 4 * 7), die (28 x 28) wie folgt bedeutet:

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

wo B ist immer noch unsere Matrix der Form (7x7) und die 0 stellt einen Block von allen Nullen Messung (7x7).

Vielleicht gibt es eine Funktion mit numpy, die das kann ... aber ich kann es nicht finden.

(nur für Informationen, das ist für die Quantenmechanik)

Antwort

5

Sie sind für das Kronecker-Produkt suchen, np.kron, die Block-Matrizen wie dies bequem zu machen:

>>> 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]]) 
Verwandte Themen