【问题标题】:Calculating norm of columns as vectors in a matrix将列的范数计算为矩阵中的向量
【发布时间】:2013-03-21 11:23:44
【问题描述】:

我正在寻找将列的范数计算为矩阵中的向量的最佳方法。 我现在的代码是这样的,但我相信它可以做得更好(也许是 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.        ]

谢谢。

【问题讨论】:

标签: python numpy linear-algebra matrix-multiplication


【解决方案1】:

使用 numpy 直接解决:

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

【讨论】:

【解决方案2】:

您可以使用 ufuncs 计算范数:

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

【讨论】:

  • 谢谢,我可以补充一点,np.square(a) 在使用复杂的东西而不是a 时可能更舒服
  • 请注意,这不适用于复杂矩阵。正确的解决方案是在下一个答案中使用np.linalg.norm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多