Я пытаюсь векторизовать функцию, которая принимает на вход трехкомпонентный вектор "x" и "матрицу" 3x3 и создает скаляр
def myfunc(x, matrix):
return np.dot(x, np.dot(matrix, x))
Однако это нужно вызывать «n» раз, и каждый раз вектор x имеет разные компоненты. Я хотел бы изменить эту функцию так, чтобы она принимала в качестве входных данных несколько массивов 3xn (столбцами которых являются векторы x) и создавала вектор, компоненты которого являются скалярами, вычисляемыми на каждой итерации.
Я могу записать суммирование Эйнштейна, которое выполняет эту работу, но для этого требуется, чтобы я построил стопку 3x3xn из «копий» оригинала 3x3. Я обеспокоен тем, что это сведет на нет любой прирост производительности, который я получу от попытки сделать это. Есть ли способ вычислить нужный мне вектор без создания копий 3x3?