gpt4 book ai didi

python - np.linalg.norm ord=2 不给出欧几里得范数

转载 作者:行者123 更新时间:2023-12-03 14:36:55 25 4
gpt4 key购买 nike

我正在尝试计算两个矩阵之间的欧几里得距离,我希望它由逐元素平方差总和的平方根给出。
在我看来,这正是由 numpy 的 linalg.norm 计算的计算结果。功能,但它似乎不符合我的预期结果。
例如,此代码返回不同的值( 5.3855.339 )

import numpy as np

a = np.arange(6).reshape(2, 3)
b = np.array([[1,2,3], [-1,1,4]])

print(np.sqrt(np.sum(np.square(a-b))))
print(np.linalg.norm(a-b, 2))
我是否误解了 linalg.norm功能?为什么上述两种计算方法返回的值不相同?

最佳答案

从我在 np.linalg.norm 的 DocString 中看到的内容来看,看起来对于dim>2的数组,ord=2取最大奇异值, 意思 np.linalg.norm(a, ord=2)np.linalg.svd(a)[1].max() 相同.所以在你的情况下,这将是:

print(np.sqrt(np.sum(np.square(a-b))))
print(np.linalg.norm(a-b, 2))
print(np.linalg.svd(a-b)[1].max())
这将返回 5.385 , 5.339 , 5.339 .
给出数学公式 on Wikipedia ,其中区分了 2-范数(即 ord=2 )和 Frobenius 范数( ord=None )。

关于python - np.linalg.norm ord=2 不给出欧几里得范数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66806583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com