2017-07-27 7 views
0

disons que j'ai une matrice numpy A de taille Nx2. Ce que je fais, est calcul de la tangente inverse 4 quadrants de la première colonne, et la deuxième colonne, comme si:Exemple vectorisé de la fonction math.atan2() en python

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

Je voudrais cependant faire d'une manière vectorisé. Comment puis je faire ça? La fonction math.atan2() ne semble pas supporter la vectorisation.

Merci!

Répondre

5

Il me semble que cela devrait juste être:

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

Ou peut-être (si phase est une longueur différente de celle A pour une raison étrange):

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

En d'autres termes, don n'utilisez pas math.atan2, utilisez numpy.arctan2 puisque les fonctions numpy sont généralement des versions vectorisées de leurs homologues math.

+0

Ne sais pas comment j'ai raté ça. Merci! – TheGrapeBeyond

+0

Y a-t-il un moyen pour moi de lui donner des résultats où les angles sont de 0 à 360? – TheGrapeBeyond

+1

Consultez ['np.rad2deg'] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.rad2deg.html#numpy.rad2deg). Et n'oubliez pas d'accepter la réponse de @mgilson (cliquez sur le chèque) –