Умножить целую матрицу на одну строку - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть две матовые матрицы, A и B:

A = [[0,-1],
     [-2,5],
     [2,6]]
B = [[5,3],
     [2,4]]
Dimension of A: N * K
Dimension of B: K * K

Я хочу сделать умножение матрицы с каждой строкой A и всего B , а затем умножить ее на каждой строки A снова. Затем подведите их.

Что такое:

N = A.shape[0]
sum = 0
for i in range(N):
    s = A[i] @ B @ A[i]
    print(s)
    sum += s
return sum

Этот принт

4
70
224

И 4 + 70 + 224 = 298 - это то, что я хочу. Есть ли какой-нибудь элегантный или pythonic способ достичь этого без цикла? Спасибо

1 Ответ

0 голосов
/ 02 ноября 2018

Мы можем использовать np.einsum -

np.einsum('ij,jk,ik->',A,B,A)

И оптимизировать его с помощью флага optimize -

np.einsum('ij,jk,ik->',A,B,A,optimize=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...