У меня есть две матрицы, состоящие из трехмерных векторов (числовой массив 1D), и мне нужно вычислить угол между векторами по строкам и вернуть результаты в одномерном массиве.Я знаю, как рассчитать угол между двумя 1d векторами.Как правильно это сделать?
*** Результирующие углы приведены в градусах, а не в радианах.
К настоящему времени у меня есть это:
import numpy as np
A = np.array([[1,0,0],
[0,1,0],
[0,0,1]])
B = np.array([[1,0,1],
[1,1,0],
[0,1,0]])
def angle(V1,V2):
"""
angle between vectors V1 and V2 in degrees using
angle = arccos ( V1 dot V2 / norm(V1) * norm(V2) ) *180/np.pi
"""
cos_of_angle = V1.dot(V2) / (np.linalg.norm(V1) * np.linalg.norm(V2))
return np.arccos(np.clip(cos_of_angle,-1,1)) * 180/np.pi
Обратите внимание на масштабирующий член 180 / np.pi для преобразования из рад в град.
Я хотел бы иметь массив:
C = [ angle(A[0],B[0]) , angle(A[1],B[1])...... and so on]
Очень признателен, если кто-то может помочь.