1、np.linalg.norm(求范数)
linalg=linear(线性)+algebra(代数),norm则表示范数。
x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)
①x: 表示矩阵(也可以是一维)
②ord:范数类型
向量范数
ord=1:列和的最大值
ord=2:|λE-ATA|=0,求特征值,然后求最大特征值得算术平方根(matlab在线版,计算ans=ATA,[x,y]=eig(ans),sqrt(y),x是特征向量,y是特征值)
ord=∞:行和的最大值
ord=None:默认情况下,是求整体的矩阵元素平方和,再开根号
③axis:处理类型
axis=1表示按行向量处理,求多个行向量的范数
axis=0表示按列向量处理,求多个列向量的范数
axis=None表示矩阵范数。
④keepding:是否保持矩阵的二维特性
True表示保持矩阵的二维特性,False相反
x = np.array([[4, 4], [4, 4]]) print("默认参数(矩阵整体元素平方和开根号,不保留矩阵二维特性):%d" % np.linalg.norm(x)) print("矩阵整体元素平方和开根号,保留矩阵二维特性:%s" % np.linalg.norm(x, keepdims=True)) print("矩阵1范数:%s" % np.linalg.norm(x, ord=1, keepdims=True)) print("矩阵2范数:%s" % np.linalg.norm(x, ord=2, keepdims=True)) print("矩阵无穷大范数:%s" % np.linalg.norm(x, ord=np.inf, keepdims=True)) print("矩阵每个行向量求向量的1范数:%s" % np.linalg.norm(x, ord=1, axis=1, keepdims=True)) --------------------------结果---------------------------- 默认参数(矩阵整体元素平方和开根号,不保留矩阵二维特性):8 矩阵整体元素平方和开根号,保留矩阵二维特性:[[8.]] 矩阵1范数:[[8.]] 矩阵2范数:[[8.]] 矩阵无穷大范数:[[8.]] 矩阵每个行向量求向量的1范数:[[8.] [8.]]
2、
x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) y = np.array([1, 0, 1]) z = np.array([[2, 1], [0, 3]]) print(np.dot(x, y)) print(x.T) print(np.dot(y, x.T)) print(np.trace(x)) # trace是求shape的对角线上的元素的和 print(np.linalg.det(z)) # 行列式 print(np.linalg.matrix_rank(z)) # 矩阵的秩 print(np.linalg.eig(z)) # 求本征值和本征向量 print(np.linalg.cholesky(z)) --------------------结果----------------------- [ 4 10 16] [[1 4 7] [2 5 8] [3 6 9]] [ 4 10 16] 15 6.0 2 (array([2., 3.]), array([[1. , 0.70710678], [0. , 0.70710678]])) [[1.41421356 0. ] [0. 1.73205081]]