Ich habe eine Reihe Array A, die Form (10,) hat.numpy Array Multiplikation mit Arrays von beliebigen Dimensionen
Ich habe auch, ab diesem Moment, ein numpy Array B mit Form (10,3,5). Ich möchte eine Multiplikation zwischen diesen beiden machen, um C so zu erhalten, dass C [0,:,:] = A [0] * B [0,:,:], C [1] = A [1] * B [1 ,:,:], etc.
Ich möchte das nicht mit Schleifen ausarbeiten, ein Grund ist die Ästhetik der Sache, der andere ist, dass dieser Code sehr generisch sein muss. Ich möchte, dass der Benutzer in der Lage ist, so ziemlich jedes beliebige B beliebiger Form einzugeben, solange die führende Dimension 10 ist. Zum Beispiel möchte ich, dass der Benutzer auch ein B mit der Form (10,4) eingeben kann.
Also: Wie kann ich diese Multiplikation mit numpy implementieren? Vielen Dank.
Nachtrag: Wurde zum Beispiel gefragt. Wird kleiner werden. Nehmen wir an, A ist das numplige Array [1,2,3] und B ist das numpy Array [[1,2], [4,5], [7,8]]. Ich möchte, dass die Multiplikation der beiden zu [[1,2], [8,10], [21,24]] führt.
...>>> a
array([1, 2, 3])
>>> b
array([[1, 2],
[4, 5],
[7, 8]])
>>> #result
>>> c
array([[ 1, 2],
[ 8, 10],
[21, 24]])
>>>
Bitte nehmen, * kleine *, zB Arrays und die erwartete Ausgabe. – wwii
Wenn 'B'' (3,5,10) 'ist, funktioniert' A * B'.'numpy' fügt bei Bedarf automatisch Dimensionen am Anfang hinzu (MATLAB fügt sie am Ende hinzu). – hpaulj
Wie oben erwähnt, werden Paare von den am weitesten rechts liegenden Dimensionen der Arrays ausgesendet. Dies bedeutet, dass '(A * B.T) .T' die Länge 10s für die Multiplikation angleichen würde und eine allgemeine Lösung wäre, aber ich denke, dass der'Einsum'-Ansatz, wie er von DSM vorgeschlagen wird, wohlkleiner ist. –