Załóżmy, że mamy dwie matryce: A
i B
i pozostawmy matrycę C
(mnożenie macierzy nie elementycznie). Chcemy uzyskać tylko przekątne wpisy C
, które można wykonać przez np.diagonal(C)
. Powoduje to jednak niepotrzebne obciążenie czasowe, ponieważ mnożymy A z B, mimo że potrzebujemy tylko multiplikacji każdego wiersza w A
z kolumną B
, która ma ten sam "identyfikator", czyli wiersz 1 z A
z kolumną 1 z B
, wiersz 2 z A
z kolumną 2 z B
i tak dalej: multiplikacje, które tworzą przekątną C
. Czy istnieje sposób, aby skutecznie osiągnąć to za pomocą Numpy? Chcę uniknąć używania pętli do kontrolowania, który wiersz jest pomnożony przez kolumnę, zamiast tego życzę sobie wbudowanej metody numpy, która wykonuje tego rodzaju operacje w celu optymalizacji wydajności.(Python) Jak uzyskać przekątną (A * B) bez wykonywania A * B?
góry dzięki ..
Uwaga dla każdego, kto na to patrzy: 'A * B' w NumPy to mnożenie elementarne, a nie mnożenie macierzy (które jest' a.dot (b) '). – Blair
to 'A' i' B' typu 'ndarray' lub' matrix'? – Bitwise
@Blair, tak jest w przypadku, gdy 'A' i' B' są 'numpy.array'. Jeśli są to "numpy.matrix", możesz użyć 'A * B' –