scipy.linalg.norm

scipy.linalg.norm(a, ord=None, axis=None, keepdims=False, check_finite=True)[源代码]

矩阵或向量范数。

此函数能够返回八个不同矩阵范数中的一个,或无限数量的向量范数(如下所述)中的一个,具体取决于 ord 参数。对于秩不同于1或2的张量,仅 ord=None 是受支持的。

参数
aarray_like

输入数组。如果 axis 是没有的, a 必须是一维或二维,除非 ord 是没有的。如果两者都有 axisord 是无的,2-范数 a.ravel 将会被退还。

ord{int,inf,-inf,‘fro’,‘nuc’,None},可选

规范顺序(见下表 Notes )。Inf表示NumPy的 inf 对象。

axis{int,整数的2元组,无},可选

如果 axis 是一个整数,它指定 a 沿其计算向量范数。如果 axis 是一个二元组,它指定保存二维矩阵的轴,并计算这些矩阵的矩阵范数。如果 axis 为None,则为向量范数(当 a 是一维)或矩阵范数(当 a 是二维的)返回。

keepdims布尔值,可选

如果将其设置为True,则在结果中规格化的轴将保留为尺寸为1的尺寸。使用此选项,结果将根据原始结果正确广播 a

check_finite布尔值,可选

是否检查输入矩阵是否仅包含有限个数字。禁用可能会带来性能提升,但如果输入确实包含无穷大或NAN,则可能会导致问题(崩溃、非终止)。

退货
n浮动或ndarray

矩阵或向量的范数。

注意事项

对于 ord <= 0 严格地说,结果并不是数学上的“范数”,但对于各种数值目的来说,它仍然是有用的。

可以计算以下指标:

订单

矩阵的范数

向量的范数

Frobenius范数

2-范数

“Fro”

Frobenius范数

--

“NUC”

核规范

--

信息

MAX(SUM(abs(A),轴=1))

最大值(abs(A))

-信息

MIN(SUM(abs(A),轴=1))

最小(abs(A))

0

--

SUM(a!=0)

1

MAX(SUM(abs(A),轴=0))

如下所示

-1

MIN(SUM(abs(A),轴=0))

如下所示

2

2-Norm(最大的唱歌值)

如下所示

-2

最小奇异值

如下所示

其他

--

总和(abs(A) ord) (1./订单)

Frobenius范数由下式给出 [1]:

\(||A||_F = [\sum_{i,j} abs(a_{i,j})^2]^{1/2}\)

核范数是奇异值的和。

Frobenius阶和核范数阶都只针对矩阵定义。

参考文献

1

G.H.Golub和C.F.Van Loan, 矩阵计算 ,马里兰州巴尔的摩,约翰霍普金斯大学出版社,1985,PG。15个

示例

>>> from scipy.linalg import norm
>>> a = np.arange(9) - 4.0
>>> a
array([-4., -3., -2., -1.,  0.,  1.,  2.,  3.,  4.])
>>> b = a.reshape((3, 3))
>>> b
array([[-4., -3., -2.],
       [-1.,  0.,  1.],
       [ 2.,  3.,  4.]])
>>> norm(a)
7.745966692414834
>>> norm(b)
7.745966692414834
>>> norm(b, 'fro')
7.745966692414834
>>> norm(a, np.inf)
4
>>> norm(b, np.inf)
9
>>> norm(a, -np.inf)
0
>>> norm(b, -np.inf)
2
>>> norm(a, 1)
20
>>> norm(b, 1)
7
>>> norm(a, -1)
-4.6566128774142013e-010
>>> norm(b, -1)
6
>>> norm(a, 2)
7.745966692414834
>>> norm(b, 2)
7.3484692283495345
>>> norm(a, -2)
0
>>> norm(b, -2)
1.8570331885190563e-016
>>> norm(a, 3)
5.8480354764257312
>>> norm(a, -3)
0