原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.norm.html
校对:(虚位以待)
numpy.linalg.
norm
(x, ord=None, axis=None, keepdims=False)[source]矩阵或向量范数。
此函数能够返回八个不同矩阵范数中的一个,或者根据ord
参数的值返回无限数量的矢量范数(如下所述)。
参数: | x:array_like
ord:{非零int,inf,-inf,'fro','nuc'},可选
axis:{int,ints的2元组,无},可选
keepdims:bool,可选
|
---|---|
返回: | n:float或ndarray
|
笔记
对于ord 0
的值,严格来说,结果不是数学“ ,但它仍然可用于各种数值目的。
可以计算以下规范:
ord | 矩阵的范数 | 向量的范数 |
---|---|---|
没有 | Frobenius范数 | 2范数 |
'fro' | Frobenius范数 | - - |
'nuc' | 核准则 | - - |
inf | max(sum(abs(x),axis = 1)) | max(abs(x)) |
-inf | min(sum(abs(x),axis = 1)) | min(abs(x)) |
0 | - - | sum(x!= 0) |
1 | max(sum(abs(x),axis = 0)) | 如下 |
-1 | min(sum(abs(x),axis = 0)) | 如下 |
2 | 2范数(最大唱。值) | 如下 |
-2 | 最小奇异值 | 如下 |
其他 | - - | sum(abs(x)** ord)**(1.ord) |
Frobenius范数由[R41]给出:
核规范是奇异值的总和。
参考文献
[R41] | (1,2) GH Golub and CF Van Loan,Matrix Computations,Baltimore,MD,Johns Hopkins University Press,1985,15 |
例子
>>> from numpy import linalg as LA
>>> a = np.arange(9) - 4
>>> 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]])
>>> LA.norm(a)
7.745966692414834
>>> LA.norm(b)
7.745966692414834
>>> LA.norm(b, 'fro')
7.745966692414834
>>> LA.norm(a, np.inf)
4.0
>>> LA.norm(b, np.inf)
9.0
>>> LA.norm(a, -np.inf)
0.0
>>> LA.norm(b, -np.inf)
2.0
>>> LA.norm(a, 1)
20.0
>>> LA.norm(b, 1)
7.0
>>> LA.norm(a, -1)
-4.6566128774142013e-010
>>> LA.norm(b, -1)
6.0
>>> LA.norm(a, 2)
7.745966692414834
>>> LA.norm(b, 2)
7.3484692283495345
>>> LA.norm(a, -2)
nan
>>> LA.norm(b, -2)
1.8570331885190563e-016
>>> LA.norm(a, 3)
5.8480354764257312
>>> LA.norm(a, -3)
nan
使用轴参数计算向量规范:
>>> c = np.array([[ 1, 2, 3],
... [-1, 1, 4]])
>>> LA.norm(c, axis=0)
array([ 1.41421356, 2.23606798, 5. ])
>>> LA.norm(c, axis=1)
array([ 3.74165739, 4.24264069])
>>> LA.norm(c, ord=1, axis=1)
array([ 6., 6.])
使用轴参数计算矩阵范数:
>>> m = np.arange(8).reshape(2,2,2)
>>> LA.norm(m, axis=(1,2))
array([ 3.74165739, 11.22497216])
>>> LA.norm(m[0, :, :]), LA.norm(m[1, :, :])
(3.7416573867739413, 11.224972160321824)