2013-03-31 232 views
2

我正在尋找計算列的範數作爲矩陣中向量的最佳方法。 我的代碼現在的問題是這樣的,但我相信它可以變得更好(與也許NumPy的?):將矩陣的列範數計算爲矩陣中的向量

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) 

將返回:

[ 2.23606798 5.  ] 

感謝。

+0

http://stackoverflow.com/questions/7741878/how-to-apply的重複-numpy-linalg-norm-to-each-row-of-a-matrix可以用np.linalg.norm(a,axis = 0)完成。 – DocLP

回答

3

您可以通過使用ufuncs計算標準:

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

直接的解決方案使用numpy的:

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