#numpy #matrix #transpose #matrix-multiplication #dot-product
Вопрос:
У меня есть большой 2D массив NumPy M в python, и я хочу вычислить numpy.matmul(M, M.T)
или , что то же самое, numpy.dot(M, M.T)
.
Однако numpy.matmul
и numpy.dot
не буду использовать симметрию, связанную с умножением с транспонированием, поэтому я считаю, что выполняю вдвое больше работы, чем мне действительно нужно.
Есть ли простой способ сделать это быстрее, используя симметрию и выполняя только половину работы? Возможно, есть функция NumPy/SciPy или какая-то другая библиотека python, о которой я не знаю, которая выполняет это?
Комментарии:
1. Это ответ на ваш вопрос? Или эта бумага ?
2. @Ivan Спасибо, но я должен был уточнить, что мне было интересно, есть ли какая-то библиотека numpy или другая библиотека python, о которой я не знаю, которая делает это, и использует тот факт, что если A-это конечный продукт, то A[i][j] = A[j][i]
3. Откуда вы знаете
matmul
, что не использует симметрию? Просто отсутствие явных параметров управления? Вы делали какие-нибудь тесты на время?4. @hpaulj Ах Я верю, что вы правы, пожалуйста, посмотрите мой ответ ниже
Ответ №1:
Кто-то сообщил мне, что numpy на самом деле уже объясняет симметрию: