2017-02-01 6 views
0

sich das folgende:Wie Matrix und Vektor spaltenweise hinzufügen?

>>> matrix = numpy.array([[1, 2, 3], 
...      [4, 5, 6], 
...      [7, 8, 9]]) 
>>> vector = numpy.array([10, 20, 30]) 
>>> matrix + vector 
array([[11, 22, 33], 
     [14, 25, 36], 
     [17, 28, 39]]) 

Dies fügt den Vektor und die Matrix zeilenweise (d.h. jede Zeile, die den Vektor aufgenommen werden).

Wie führe ich die gleichen spaltenweise? Das Ergebnis sollte

>>> ??? 
array([[11, 12, 13], 
     [24, 25, 26], 
     [37, 38, 39]]) 

Ich bin mir bewusst, dass ich

>>> (matrix.T + vector).T 
array([[11, 12, 13], 
     [24, 25, 26], 
     [37, 38, 39]]) 

verwenden können, aber ich habe viele solche Zusätze haben und diese doppelte Umsetzung verwendet, wird der Code ziemlich unlesbar machen. Gibt es eine Möglichkeit, ND-Arrays so zu konfigurieren, dass sie die Addition entlang der ersten Achse (anstelle der letzten) durchführen?

+0

, das hilft vielleicht: http://stackoverflow.com/questions/31587802/numpy-add-a-vector-to-matrix-column-wise Es ist nicht viel besser lesbar ... – Tristan

Antwort

1

Machen Sie den Vektor, der eine Spalte:

matrix + vector[:, None] 
+0

Sie können dies auch (wohl deutlicher) mit 'vector.shape = (- 1,1)' tun. Die "-1" kodiert im Grunde für "behalten Sie die Größe des Vektors" oder definiert direkt "Vektor = np.array ([[10], [20], [30]])" – Julien

+1

Sobald Sie sich daran gewöhnen, die '[:, None]' Version ist klar und einfach zu benutzen. – hpaulj

Verwandte Themen