中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

linalg.norm

功能描述

矩阵或向量范数。

该函数能够返回八个不同的矩阵范数之一,或无限数量的向量范数之一(如表1所述),具体取决于参数ord的值。

表1 参数ord对应的范数

ord

矩阵范数

向量范数

None

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))

sum(abs(x)**ord)**(1./ord)

-1

min(sum(abs(x), axis=0))

sum(abs(x)**ord)**(1./ord)

2

2-范数(奇异值的最大值)

sum(abs(x)**ord)**(1./ord)

-2

奇异值的最小值

sum(abs(x)**ord)**(1./ord)

其他

-

sum(abs(x)**ord)**(1./ord)

必选输入参数

参数名

类型

说明

x

array_like

输入数组。

  • 如果轴为None,x必须是1-D或2-D,除非ord为None。
  • 如果轴和ord均为None,则将返回x.ravel的2范数。

可选输入参数

参数名

类型

默认值

说明

ord

{non-zero int, inf, -inf, ‘fro’, ‘nuc’}

None

请参见表1

axis

{None, int, 2-tuple of ints}

None

  • 如果轴是一个整数,它指定了计算向量范数的x轴。
  • 如果轴是2元组,它指定容纳二维矩阵的轴,并计算这些矩阵的矩阵范数。
  • 如果轴为None,则返回向量范数(当x为1-D时)或矩阵范数(当x为2-D时)。

keepdims

bool

False

如果将其设置为True,则在结果中将作为尺寸为1的维度留在结果中。使用此选项,结果将正确地针对原始x广播。

返回数据

类型

说明

float or ndarray

矩阵/向量范数。

示例

>>> import numpy as np
>>> 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]])
>>> 
>>> np.linalg.norm(a)
7.745966692414834
>>> np.linalg.norm(b)
7.745966692414834
>>> np.linalg.norm(b, 'fro')
7.745966692414834
>>> np.linalg.norm(a, np.inf)
4.0
>>> np.linalg.norm(b, np.inf)
9.0
>>> np.linalg.norm(a, -np.inf)
0.0
>>> np.linalg.norm(b, -np.inf)
2.0
>>> 
>>> np.linalg.norm(a, 1)
20.0
>>> np.linalg.norm(b, 1)
7.0
>>> np.linalg.norm(b, -1)
6.0
>>> np.linalg.norm(a, 2)
7.745966692414834
>>> np.linalg.norm(b, 2)
7.348469228349533
>>> np.linalg.norm(a, -2)
0.0
>>> np.linalg.norm(b, -2)
3.757577037301703e-16
>>> 
>>> c = np.array([[1,2,3], [-1,1,4]])
>>> np.linalg.norm(c, axis=0)
array([1.41421356, 2.23606798, 5.        ])
>>> np.linalg.norm(c, axis=1)
array([3.74165739, 4.24264069])
>>> np.linalg.norm(c, ord=1, axis=1)
array([6., 6.])
>>> 
>>> 
>>> m = np.arange(8).reshape(2,2,2)
>>> m
array([[[0, 1],
        [2, 3]],

       [[4, 5],
        [6, 7]]])
>>> np.linalg.norm(m, axis=(1,2))
array([ 3.74165739, 11.22497216])
>>> np.linalg.norm(m[0, :, :])
3.7416573867739413
>>> np.linalg.norm(m[1, :, :])
11.224972160321824
>>>