Diciamo che abbiamo due matrici A
e B
e che la matrice A*B
è la(moltiplicazione della matrice non element-wise). Desideriamo ricevere solo le voci diagonali di C
, che possono essere eseguite tramite np.diagonal(C)
. Tuttavia, ciò causa un inutile sovraccarico di tempo, perché stiamo moltiplicando A con B anche se abbiamo solo bisogno delle moltiplicazioni di ogni riga in A
con la colonna di B
che ha lo stesso 'id', ovvero la riga 1 di A
con colonna 1 di B
, riga 2 di A
con la colonna 2 di B
e così via: le moltiplicazioni che formano la diagonale di C
. C'è un modo per raggiungerlo in modo efficiente usando Numpy? Voglio evitare di usare i loop per controllare quale riga è moltiplicata con quale colonna, invece, vorrei un metodo di numpy incorporato che faccia questo tipo di operazione per ottimizzare le prestazioni.(Python) Come ottenere diagonale (A * B) senza dover eseguire A * B?
Grazie in anticipo ..
Solo una nota per chi guarda questo: 'A * B' in NumPy è una moltiplicazione di elementi, non una moltiplicazione di matrice (che è' a.dot (b) '). – Blair
sono 'A' e' B' di tipo 'ndarray' o' matrix'? – Bitwise
@Blair, questo è il caso se 'A' e' B' sono 'numpy.array'. Se sono 'numpy.matrix', puoi usare' A * B' –