2017-07-27 95 views
0

让我们说我有一个numpy矩阵A,它的大小为Nx2。我在做什么,在计算第一列的4象限反正切,第二列,像这样:Python中的math.atan2()函数的向量化示例

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

我却想做到这一点的量化方式。我怎样才能做到这一点? math.atan2()函数似乎不支持向量化。

谢谢!

回答

5

它看起来对我来说,它应该仅仅是:

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

或者可能(如果phase是不同的长度A一些奇怪的原因):

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

换句话说,不要不使用math.atan2,使用numpy.arctan2,因为numpy函数通常是对应的math对应版本的矢量化版本。

+0

不知道我是怎么错过的。谢谢! – TheGrapeBeyond

+0

有没有办法让我在角度从0到360的情况下给出结果? – TheGrapeBeyond

+1

查看['np.rad2deg'](https://docs.scipy.org/doc/numpy/reference/generated/numpy.rad2deg.html#numpy.rad2deg)。并且不要忘记接受来自@mgilson的答案(点击支票) –