2013-03-31 3 views
2

Je cherche la meilleure façon de calculer la norme des colonnes en tant que vecteurs dans une matrice. Mon code est en ce moment comme ça, mais je suis sûr qu'il peut être mieux (avec numpy peut-être?):Calcul de la norme des colonnes en tant que vecteurs dans une matrice

import numpy as np 
def norm(a): 
    ret=np.zeros(a.shape[1]) 
    for i in range(a.shape[1]): 
     ret[i]=np.linalg.norm(a[:,i]) 
    return ret 

a=np.array([[1,3],[2,4]]) 
print norm(a) 

qui retourne:

[ 2.23606798 5.  ] 

Merci.

+0

en double de http://stackoverflow.com/questions/7741878/how-to-apply -numpy-linalg-norm-to-each-row-of-a-matrix Peut être fait avec np.linalg.norm (a, axis = 0). – DocLP

Répondre

3

Vous pouvez calculer la norme en utilisant ufuncs:

np.sqrt(np.sum(a*a, axis=0)) 
0

solution directe à l'aide numpy:

x = np.norm(a, axis=0) 
Questions connexes