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.]]