2017-11-26 3 views
2

は、仮に、私がこの2次元numpyの配列のリンクを持っている:私は軸OXとOYを持っている平らな2D、のベクトルとして、それを考慮したいと思うnumpyで2DベクトルとOXの間の角度を計算する方法は?

import numpy as np 
v = np.array([1, 2]) 

を。私は好奇心が強いです、ベクトルと軸OXの間の角度を計算するための組み込み関数やかなりエレガントな方法がありますか?角度は-PIからPIまでです。私は別に例のx = 0を考慮しなければならないので、

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 

しかし、エレガントではないようですし、X <:

は私がnumpy.arctanの助けを借りて、このように計算することができ、知っています0だから私は、numpyはおそらくそれを計算する特別な機能を持っていると思う。角度はy-axisからであるとして、しかし

np.arctan2(*v) 

+0

あなたは[上記Arctan2](https://docs.scipy.org/doc/numpy-1.13.0/reference/を試してみましたgenerated/numpy.arctan2.html)? – user32185

答えて

1

あなたはnp.arctan2を使用することができます

|-> 
    | \ #so this is the positive direction 
    | 
------- 
    | 
    | 

図は、おそらく


012を助けにはなりません

それはXから角度を計算するために、引数を交換する必要があります:

np.arctan2(v[1], v[0]) 
+0

ありがとう、これは私が探している機能です。しかし、実際には2倍の乗算は必要ありません。代わりに、np.arctan2(v [1]、v [0])が必要です。 – Fomalhaut

+0

@Fomalhautああ、よろしくお願いします。 –

関連する問題