Python模块np.linalg.norm计算数学范数

linalg=linear(线性)+algebra(代数),norm则表示范数。
x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)

①x: 表示矩阵(也可以是一维)

②ord:范数类型
Python模块np.linalg.norm计算数学范数_第1张图片
矩阵的范数:

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相反

import numpy as np
x = np.array([
    [0, 3, 4],
    [1, 6, 4]])
#默认参数ord=None,axis=None,keepdims=False
print("默认参数(矩阵整体元素平方和开根号,不保留矩阵二维特性):",np.linalg.norm(x))
print("矩阵整体元素平方和开根号,保留矩阵二维特性:",np.linalg.norm(x,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,keepdims=True))
print("矩阵2范数:",np.linalg.norm(x,ord=2,keepdims=True))
print("矩阵∞范数:",np.linalg.norm(x,ord=np.inf,keepdims=True))
 
print("矩阵每个行向量求向量的1范数:",np.linalg.norm(x,ord=1,axis=1,keepdims=True))

或者

import numpy as np

A = np.array([[3,-4],[-6,5]])
print(A)
ret_all = np.linalg.norm(A,ord=None)
print(ret_all)                                 #ret_all返回的是2范数(平方和开根号)的值
ret_row = np.linalg.norm(A,ord=None,axis=1)
print(ret_row)	                              #ret_row返回的是逐行2范数(平方和开根号)的值
ret_colume = np.linalg.norm(A,ord=None,axis=0)
print(ret_colume)                             #ret_row返回的是逐列2范数(平方和开根号)的值
ret_inf_max = np.linalg.norm(A,ord=np.Inf)
print(ret_inf_max)                           #ret_inf_max返回的无穷范数(元素是逐行中元素绝对值的和最大)
ret_inf_max_row = np.linalg.norm(A,ord=np.Inf,axis=1)
print(ret_inf_max_row)						 #ret_inf_max_row返回的是无穷范数每行元素的绝对值的最大值
ret_inf_max_colume = np.linalg.norm(A,ord=np.Inf,axis=0)
print(ret_inf_max_colume)					 #ret_inf_max_row返回的是无穷范数每列元素的绝对值的最大值
ret_inf_min = np.linalg.norm(A,ord=-np.Inf)
print(ret_inf_min)							#ret_inf_min返回的无穷范数(元素是逐行中元素绝对值最小的值)
B = np.array([[100,-4],[-6,5]])
print(B)
ret_one = np.linalg.norm(B,ord=1)
print(ret_one)                              #ret_one返回的是求列的元素绝对值和的最大值
ret_one_row = np.linalg.norm(B,ord=1,axis=1)
print(ret_one_row)							#ret_one_row返回的是逐行求行的元素绝对值和
ret_one_colume = np.linalg.norm(B,ord=1,axis=0)
print(ret_one_colume)						#ret_one_row返回的是逐列求列的元素绝对值和

引用参考文献:
https://blog.csdn.net/hqh131360239/article/details/79061535

你可能感兴趣的:(Python,python)