Python 如何使用numpy计算2D矢量和OX之间的角度?
假设我有一个2D numpy数组链接:Python 如何使用numpy计算2D矢量和OX之间的角度?,python,arrays,numpy,vector,Python,Arrays,Numpy,Vector,假设我有一个2D numpy数组链接: import numpy as np v = np.array([1, 2]) 我想把它看成二维平面上的一个向量,它有轴Ox和Oy。我很好奇,有没有一种内置的或者相当优雅的方法来计算向量和轴之间的角度?角度应该是从-PI到PI 我知道,我可以用numpy.arctan这样计算: def calc_phi(v): if v[0] > 0: return np.arctan(v[1] / v[0]) else:
import numpy as np
v = np.array([1, 2])
我想把它看成二维平面上的一个向量,它有轴Ox和Oy。我很好奇,有没有一种内置的或者相当优雅的方法来计算向量和轴之间的角度?角度应该是从-PI到PI
我知道,我可以用numpy.arctan
这样计算:
def calc_phi(v):
if v[0] > 0:
return np.arctan(v[1] / v[0])
else:
if v[1] > 0:
if v[0] < 0:
return np.pi + np.arctan(v[1] / v[0])
else:
return np.pi
elif v[1] < 0:
if v[0] < 0:
return -np.pi + np.arctan(v[1] / v[0])
else:
return -np.pi
else:
return 0.0
def calc_phi(v):
如果v[0]>0:
返回np.arctan(v[1]/v[0])
其他:
如果v[1]>0:
如果v[0]<0:
返回np.pi+np.arctan(v[1]/v[0])
其他:
返回np.pi
elif v[1]<0:
如果v[0]<0:
返回-np.pi+np.arctan(v[1]/v[0])
其他:
返回-np.pi
其他:
返回0.0
<>但是它看起来并不优雅,因为我必须分别考虑x=0和x<0的情况。所以我认为,numpy
可能有一个特殊的函数来计算它。您可以使用:
但是,由于角度是从y轴开始的:
|->
| \ #so this is the positive direction
|
-------
|
|
图表可能不会有帮助
有必要交换参数,使其从X计算角度:
np.arctan2(v[1], v[0])
你试过了吗?谢谢,这就是我要找的功能。但实际上我不需要2的乘法。相反,我需要np.arctan2(v[1],v[0])来获得与OX的角度。
np.arctan2(v[1], v[0])