Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用numpy计算2D矢量和OX之间的角度?_Python_Arrays_Numpy_Vector - Fatal编程技术网

Python 如何使用numpy计算2D矢量和OX之间的角度?

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:

假设我有一个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:
        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])