Матричное умножение с несколькими массивами

1

Какой самый быстрый способ умножить матрицу на массив векторов? Мне нужно умножить матрицу 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
    Что за умножение? Элементарно поперек рядов?
  • 1
    Пожалуйста, предоставьте пример данных с ожидаемым результатом.
Показать ещё 3 комментария
Теги:
numpy
python-3.x
scipy

1 ответ

0
Лучший ответ

Похоже, вы хотите точечный продукт:

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

где arr и A - массивы

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

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

  • 0
    Что такое AT в этом случае?
  • 0
    Транспонирование A с использованием NumPy.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню