2017-07-27 7 views
0

私は、サイズNx2のnumpyの行列Aを持っているとしましょう。私は何をやっている、ように、最初の列の4象限逆正接、2番目の列を計算しますpythonのmath.atan2()関数のベクトル化された例

import math 
for i in xrange(A.shape[0]): 
    phase[i] = math.atan2(A[i,0], A[i,1]) 

私はしかし、ベクトル化の方法でこれを実行したいと思います。どうやってやるの? math.atan2()関数はベクトル化をサポートしていないようです。

ありがとうございます!

import numpy as np 
phase = np.arctan2(A[:, 0], A[:, 1]) 

または可能性(phaseは、いくつかの奇妙な理由でAと異なる長さの場合)::それだけでなければなりませんようにそれは私には見えます

答えて

5

つまり

phase[:len(A)] = np.arctan2(A[:, 0], A[:, 1]) 

、ドンnumpy関数は一般に対応するmathのベクトル化されたバージョンであるため、math.atan2を使用する場合はnumpy.arctan2を使用してください。

+0

私はそれを逃した方法を知らない。ありがとう! – TheGrapeBeyond

+0

角度が0〜360の範囲で結果を出す方法はありますか? – TheGrapeBeyond

+1

['np.rad2deg'](https://docs.scipy.org/doc/numpy/reference/generated/numpy.rad2deg.html#numpy.rad2deg)をご覧ください。そして、@ mgilsonからの回答を受け入れることを忘れないでください(チェックをクリックしてください) –

関連する問題