在Python中获取向量的1范数

时间:2009-05-20 07:37:50

标签: python vector norm

如何在Python中计算两个向量||a - b||_1 = sum(|a_i - b_i|)的差异的1范数?

a = [1,2,3,4]  
b = [2,3,4,5]

||a - b||_1 = 4  

4 个答案:

答案 0 :(得分:25)

Python具有强大的内置类型,但 Python列表不是数学向量或矩阵。你可以使用列表执行此操作,但除了琐碎的操作之外,它可能很麻烦。

如果您发现自己经常需要向量或矩阵算术,则字段中的标准为NumPy ,这可能已经按照Python的方式为您的操作系统打包。

我分享了其他人对你正在尝试做什么的困惑,但也许 numpy.linalg.norm 函数会有所帮助:

>>> import numpy
>>> a = numpy.array([1, 2, 3, 4])
>>> b = numpy.array([2, 3, 4, 5])
>>> numpy.linalg.norm((a - b), ord=1)
4

展示如何在幕后工作:

>>> a
array([1, 2, 3, 4])
>>> b
array([2, 3, 4, 5])
>>> (a - b)
array([-1, -1, -1, -1])
>>> numpy.linalg.norm((a - b))
2.0
>>> numpy.linalg.norm((a - b), ord=1)
4

答案 1 :(得分:9)

在NumPy中,对于两个向量ab,这只是

numpy.linalg.norm(a - b, ord=1)

答案 2 :(得分:6)

您似乎要求两个数组的配对组件之间的差异总和:

>>> A=[1,2,3,4]
>>> B=[2,3,4,5]
>>> sum(abs(a - b) for a, b in zip(A, B))
4

答案 3 :(得分:2)

目前尚不清楚这里究竟需要什么,但这是我的猜测

a=[1,2,3,4]
b=[2,3,4,5]
def a_b(a,b):
    return sum(map(lambda a:abs(a[0]-a[1]), zip(a,b)))

print a_b(a,b)