Ho una matrice numpy A, che ha forma (10,).moltiplicazione di array numpy con matrici di dimensioni arbitrarie
Ho anche, a partire da questo momento, una matrice numpy B con forma (10,3,5). Voglio fare una moltiplicazione tra questi due per ottenere C tale che C [0,:,:] = A [0] * B [0,:,:], C [1] = A [1] * B [1 ,:,:], ecc.
Non voglio risolvere questo problema con i loop, una ragione è l'estetica della cosa, l'altra è che questo codice deve essere molto generico. Voglio che l'utente sia in grado di inserire praticamente qualsiasi B di qualsiasi forma purché la dimensione iniziale sia 10. Ad esempio, voglio che l'utente possa anche inserire una B di forma (10,4).
Quindi: come posso implementare questa moltiplicazione usando numpy? Grazie.
ADDENDUM: è stato chiesto per esempio. Andrà più piccolo. Diciamo che A è la matrice numpy [1,2,3] e B è la matrice numpy [[1,2], [4,5], [7,8]]. Voglio che la moltiplicazione dei due dia come risultato [[1,2], [8,10], [21,24]]. ...
>>> a
array([1, 2, 3])
>>> b
array([[1, 2],
[4, 5],
[7, 8]])
>>> #result
>>> c
array([[ 1, 2],
[ 8, 10],
[21, 24]])
>>>
Si prega di includere, * piccolo *, esempio gli array e l'output previsto. – wwii
Se 'B' è' (3,5,10) ', il' A * B' funziona.'numpy' aggiunge automaticamente le dimensioni all'inizio come necessario (MATLAB le aggiunge alla fine). – hpaulj
Come notato sopra, le coppie di radiodiffusione si allontanano dalle dimensioni più a destra degli array. Ciò significa che '(A * B.T) .T' corrisponderebbe alla lunghezza 10s per la moltiplicazione e sarebbe una soluzione generale, ma penso che l'approccio' einsum' come suggerito da DSM sia discutibilmente migliore. –