np.linalg.norm()——范数

linalg=linear(线性)+algebra(代数),norm则表示范数。

函数:

x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)

#默认参数ord=None,axis=None,keepdims=False

1. x: 表示矩阵(可以是一维)

2. ord:范数类型

向量的三种范数求法


矩阵的三种范数求法:

参数

说明

ord=1

列和的最大值

ord=2

|λE-ATA|=0,求特征值,然后求最大特征值得算术平方根

ord=∞

行和的最大值

3. axis:处理类型

参数 说明
axis=None 表示矩阵范数
axis=1 表示按行向量处理,求多个行向量的范数
axis=0 表示按列向量处理,求多个列向量的范数

4. keepding:是否保持矩阵的二维特性

True表示保持矩阵的二维特性,False相反

例:

import numpy as np
x = np.array([
    [1, 2, 3],
    [2, 4, 6]])
print "默认参数(矩阵2范数,不保留矩阵二维特性)        :", np.linalg.norm(x)
print "矩阵2范数,保留矩阵二维特性:", np.linalg.norm(x, keepdims=True)
print "矩阵1范数(列和的最大值)   :", np.linalg.norm(x, ord=1,keepdims=True)
print "矩阵2范数(求特征值,然后求最大特征值得算术平方根):", np.linalg.norm(x, ord=2, keepdims=True)
print "矩阵∞范数(行和的最大值)   :", np.linalg.norm(x, ord=np.inf, keepdims=True)
print "矩阵每个行向量求向量的2范数:", np.linalg.norm(x, axis=1, keepdims=True)
print "矩阵每个列向量求向量的2范数:", np.linalg.norm(x, axis=0, keepdims=True)
print "矩阵每个行向量求向量的1范数:", np.linalg.norm(x, ord=1, axis=1, keepdims=True)
print "矩阵每个列向量求向量的1范数:", np.linalg.norm(x, ord=1, axis=0, keepdims=True)

输出:

默认参数(矩阵2范数,不保留矩阵二维特性)        : 8.36660026534
矩阵2范数,保留矩阵二维特性: [[8.36660027]]
矩阵1范数(列和的最大值)   : [[9.]]
矩阵2范数(求特征值,然后求最大特征值得算术平方根): [[8.36660027]]
矩阵∞范数(行和的最大值)   : [[12.]]
矩阵每个行向量求向量的2范数: [[3.74165739]
 [7.48331477]]
矩阵每个列向量求向量的2范数: [[2.23606798 4.47213595 6.70820393]]
矩阵每个行向量求向量的1范数: [[ 6.]
 [12.]]
矩阵每个列向量求向量的1范数: [[3. 6. 9.]]

猜你喜欢

转载自blog.csdn.net/Liang_xj/article/details/85005243