Может быть, просто возможно, это то, что вы действительно хотите:
np.dot(x, y) / np.linalg.norm(y)
Это должно дать проекцию вектора x
на вектор y
- см. https://en.wikipedia.org/wiki/Vector_projection. В качестве альтернативы, если вы хотите вычислить проекцию y
на x
, то замените y
на x
в знаменателе (norm
) вышеприведенного уравнения.
РЕДАКТИРОВАТЬ: Как отметил @VaidAbhishek, приведенная выше формула для скалярной проекции. Чтобы получить проекцию vector , умножьте скалярную проекцию на единичный вектор в направлении вектора, на который проецируется первый вектор. Формула затем может быть изменена как:
y * np.dot(x, y) / np.dot(y, y)
для векторной проекции x
на y
.