Вычислить сумму в массиве NumPy - PullRequest
0 голосов
/ 06 мая 2018

У меня есть матрица m на n A, реализованная как массив numpy.

import numpy as np
m = 10
n = 7
A = np.random.rand(m, n)

Я хочу вычислить матрицу m по m B, записи которой

B[i, j] = sum_{k=1,...,n} sum_{l=1,...,n} A[i, k] * A[j, l]

Какой самый простой способ сделать это без явного указания циклов?

1 Ответ

0 голосов
/ 06 мая 2018

Обратите внимание, что сумма в k в вашем выражении влияет только на первый фактор, а сумма в l включает только второй:

sum_{k=1,...,n} sum_{l=1,...,n} A[i, k] * A[j, l] =
    (sum_{k=1,...,n}  A[i, k]) * (sum_{l=1,...,n} A[j, l])

Выражения в скобках, за исключением названий индексов, одинаковы, поэтому определите

sA = np.sum(A, axis=1)

Тогда ваш B - это так называемое внешнее произведение из sA с самим собой:

B = np.outer(sA, sA)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...