Какой самый быстрый способ умножить матрицу на массив векторов? Мне нужно умножить матрицу 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)
Похоже, вы хотите точечный продукт:
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
Оба возвращают одно и то же, но это не одно и то же вычисление.
A
с использованием NumPy.