numpy arctan2错误或使用问题?

时间:2012-11-09 13:05:17

标签: python numpy python-2.7

我正在将一些函数从Excel电子表格翻译成python。我需要使用atan2 根据numpy docs,它是arctan2: arctan2。问题是这两个结果甚至不是很接近:

oc = 23.4384863405
sal = 89.7814630647
sra = np.arctan2(np.cos(np.deg2rad(sal)),
         np.cos(np.deg2rad(oc))*np.sin(np.deg2rad(sal)))
results: Excel = 1.566714757 Numpy = 0.00415720646  ??

我相信Excel的结果是正确的。这是错误的。

现在要么我没有正确使用arctan2,要么atan2在numpy中不是arctan2,或者numpy中有一个bug,或者我在这里完全丢失了。

我正在使用python版本2.7.2和numpy 1.6.2

请问任何想法? 感谢

1 个答案:

答案 0 :(得分:12)

来自Excel docs

  

ATAN2功能的语法是:

     

ATAN2(x坐标,y坐标)

来自numpy docs

  

numpy.arctan2(x1,x2 [,out])

     

x1 / x2的逐元素反正切正确选择象限。

     

选择象限(即分支),使arctan2(x1,x2)为   在原点和原点之间的光线之间以弧度表示的角度   穿过点(1,0),射线在原点和   穿过点(x2,x1)。 (注意角色颠倒:   “y坐标”是第一个函数参数,“x坐标”是   第二个。)

他们以相反的顺序接受他们的论点。因此:

In [31]: arctan2(cos(deg2rad(sal)), cos(deg2rad(oc))*sin(deg2rad(sal)))
Out[31]: 0.0041572064598812417

In [32]: arctan2(cos(deg2rad(oc))*sin(deg2rad(sal)), cos(deg2rad(sal)))
Out[32]: 1.5666391203350154