Предположат, имеющие два вектора с м х 6, п х 6Python вычислить конкретное скалярное произведение на векторах
import numpy as np
a = np.random.random(m,6)
b = np.random.random(n,6)
с использованием np.inner работает как ожидались, и выходы
np.inner(a,b).shape
(m,n)
с каждым элементом является скалярной продукт каждой комбинации. Теперь я хочу вычислить специальный внутренний продукт (а именно Plucker). Прямо сейчас с использованием
def pluckerSide(a,b):
a0,a1,a2,a3,a4,a5 = a
b0,b1,b2,b3,b4,b5 = b
return a0*b4+a1*b5+a2*b3+a4*b0+a5*b1+a3*b2
с a, b нарезанный петлей для петли. Это слишком медленно. Любые планы по векторизации терпят неудачу. В основном распространены ошибки из-за неправильных фигур. Не могу заставить np.vectorize работать. Может быть, здесь кто-то может помочь?
Так, 'a' в' pluckerSide' является каждая строка из исходного входа массив 'a'? Аналогично для 'b'? Не могли бы вы поделиться кодом цикла, который генерирует 'a' и' b', которые вы загружаете в 'pluckerSide (a, b)'? – Divakar
a, b - Линии в пространстве plucker, 6-пространство, представляющее геометрические линии. поэтому каждая строка в a или b является строкой в 3d. pluckerside вычисляет внутреннее произведение такой 2 строки, давая информацию о том, с какой стороны они проходят друг друга в пространстве (или если они пересекаются, его == 0) – Max