Python——np.linalg.norm求三种范数的方法(超详细附代码与注解)

开始之前

在处理机器学习问题中,我们常常会碰到范数,这里我将通过code给大家讲解一下范数。
范式代码:np.linalg.norm(x, ord=None, axis=None)
其中:
(1)linalg=linear(线性)+algebra(代数),norm表示范数
(2)x代表矩阵ord为范数类型

参数 范数类型
ord=2或None 二范数
ord=1 一范数
ord=np.inf 无穷范数

当ord=2表示求特征值,然后求最大特征值的算术平方根,当ord=1表示求列和的最大值,当ord=∞表示求行和的最大值。
【注】严格来讲,L0不属于范数,其表示向量中所有非零元素的个数,此处不予讲解。
(3)axis为处理类型:当axis=1时表示按行向量处理,求多个行向量的范数。当axis=0时表示按列向量处理,求多个列向量的范数。当axis=None表示矩阵范数

前提准备

Jupyter notebook 或 Pycharm
火狐浏览器或谷歌浏览器
win7或win10电脑一台

代码如下:

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返回的是逐列求列的元素绝对值和

效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了38 篇原创文章 · 获赞 194 · 访问量 4729

猜你喜欢

转载自blog.csdn.net/weixin_37763870/article/details/103434397