在 Python 中获取向量的 1-范数

发布于 2024-07-22 04:38:52 字数 154 浏览 5 评论 0原文

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

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

||a - b||_1 = 4  

How can I calculate the 1-norm of the difference of two vectors, ||a - b||_1 = sum(|a_i - b_i|) in Python?

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

||a - b||_1 = 4  

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

草莓味的萝莉 2024-07-29 04:38:52

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

Python has powerful built-in types, but Python lists are not mathematical vectors or matrices. You could do this with lists, but it will likely be cumbersome for anything more than trivial operations.

If you find yourself needing vector or matrix arithmetic often, the standard in the field is NumPy, which probably already comes packaged for your operating system the way Python also was.

I share the confusion of others about exactly what it is you're trying to do, but perhaps the numpy.linalg.norm function will help:

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

To show how that's working under the covers:

>>> 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
安人多梦 2024-07-29 04:38:52

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

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

In NumPy, for two vectors a and b, this is just

numpy.linalg.norm(a - b, ord=1)
金兰素衣 2024-07-29 04:38:52

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

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

You appear to be asking for the sum of the differences between the paired components of the two arrays:

>>> A=[1,2,3,4]
>>> B=[2,3,4,5]
>>> sum(abs(a - b) for a, b in zip(A, B))
4
初心未许 2024-07-29 04:38:52

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

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)

It is not clear what exactly is required here, but here is my guess

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)
各自安好 2024-07-29 04:38:52

使用 Numpy,您可以使用线性代数包计算两个向量之间的任何范数。

 import numpy as np
 a = np.array([[2,3,4])
 b = np.array([0,-1,7])
      
 # L1 Norm
 np.linalg.norm(a-b, ord=1)

 # L2 Norm
 np.linalg.norm(a-b, ord=2)

# L3 Norm
 np.linalg.norm(a-b, ord=3)

# Ln Norm
 np.linalg.norm(a-b, ord=n)

示例:

在此处输入图像描述

Using Numpy you can calculate any norm between two vectors using the linear algebra package.

 import numpy as np
 a = np.array([[2,3,4])
 b = np.array([0,-1,7])
      
 # L1 Norm
 np.linalg.norm(a-b, ord=1)

 # L2 Norm
 np.linalg.norm(a-b, ord=2)

# L3 Norm
 np.linalg.norm(a-b, ord=3)

# Ln Norm
 np.linalg.norm(a-b, ord=n)

Example:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文