Матричное умножение с несколькими массивами - PullRequest
0 голосов
/ 16 ноября 2018

Какой самый быстрый способ умножить матрицу на массив векторов? Мне нужно умножить матрицу A на каждый вектор в списке из 1000 векторов. Использование цикла for занимает слишком много времени, поэтому мне было интересно, есть ли способ умножить их все сразу?

Пример:

arr = [[1,1,1], [1,1,1],[1,1,1]]

A=
[2 2 2]
[2 2 2]

Так что мне нужно умножить Av для каждого v в обр. Результат:

arr = [[6,6], [6,6], [6,6]]

Есть ли более быстрый способ, чем:

new_arr = []
for v in arr:
    sol = np.matmul(A, v)
    new_arr.append(sol)

1 Ответ

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

Похоже, что вы хотите получить точечное произведение:

new_arr = np.dot(arr, A.T)

, где arr и A - это массивы numpy:

arr = np.array([[1,1,1], [1,1,1],[1,1,1]])
A = np.array([[2,2, 2],[2,2,2]])

Результат:

array([[6, 6],
       [6, 6],
       [6, 6]])

Согласно вашему редактированию, требуемое скалярное произведение может быть:

new_arr = np.dot(A, arr).T

Оба возвращают одно и то же, но это не одно и то же вычисление.

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