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 是没有的。如果两者都有 axis 和 ord 是无的,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