Я работаю над матричными умножениями в NumPy, используя np.dot(). Поскольку набор данных очень велик, я хотел бы максимально сократить общее время выполнения, т. Е. Выполнить как можно меньше продуктов np.dot().Линейная алгебра в Numpy
В частности, мне нужно рассчитать общий матричный продукт, а также соответствующий поток от каждого элемента моего вектора значений. Есть ли способ в NumPy рассчитать все это вместе в одном или двух продуктах np.dot()? В приведенном ниже коде есть ли способ уменьшить количество продуктов np.dot() и получить одинаковый результат?
import pandas as pd
import numpy as np
vector = pd.DataFrame([1, 2, 3],
['A', 'B', 'C'], ["Values"])
matrix = pd.DataFrame([[0.5, 0.4, 0.1],
[0.2, 0.6, 0.2],
[0.1, 0.3, 0.6]],
index = ['A', 'B', 'C'], columns = ['A', 'B', 'C'])
# Can the number of matrix multiplications in this part be reduced?
overall = np.dot(vector.T, matrix)
from_A = np.dot(vector.T * [1,0,0], matrix)
from_B = np.dot(vector.T * [0,1,0], matrix)
from_C = np.dot(vector.T * [0,0,1], matrix)
print("Overall:", overall)
print("From A:", from_A)
print("From B:", from_B)
print("From C:", from_C)
См. Обсуждение здесь - http://stackoverflow.com/questions/21562986/numpy-matrix-vector-multiplication –
Можете ли вы предоставить лучший пример желаемого ввода и вывода? Не совсем понятно, что вы хотите. –
Вам здесь не требуется матричное умножение. См. Мой ответ. Я думаю, что это лучше, чем выбранный в настоящий момент. –