2010-09-28 6 views
4

J'essaie de comprendre comment faire une sorte de multiplication matricielle scalaire en numpy.multiplication de matrice numpy

Je

a = array(((1,2,3),(4,5,6))) 
b = array((11,12)) 

et je veux faire

a op b 

au résultat dans

array(((1*11,2*11,3*11),(4*12,5*12,6*12)) 

en ce moment je suis en utilisant l'expression suivante

c = a * array ((b, b, b)). transpose()

Il semble que il doit y avoir un moyen plus efficace de le faire si

Répondre

7

Profitant de broadcasting:

(a.T * b).T 
+0

Je pense que c'est la transposition de ce que la question a demandé. –

+0

@ Jon-Eric: merci, je l'ai réparé. –

+0

merci - cela fonctionne bien – damien

1

L'alternative à la transposition a est de changer la forme de b pour faire la diffusion donner le résultat que vous cherchez:

a * b[:, np.newaxis] 

Notez que l'ajout du nouvel axe à b donne le tableau suivant:

array([[11], 
     [12]]) 
Questions connexes