【Numpy】np.linalg.norm() 的用法(求范数)

一、np.linalg.norm() 是什么

linalg=linear+algebra ,也就是线性代数的意思,是numpy 库中进行线性代数运算方面的函数。

使用 np.linalg 这个模块,可以计算范数、逆矩阵、求特征值、解线性方程组以及求解行列式等。

本文要讲的 np.linalg.norm()  ,就是计算范数的意思,norm 则表示 范数。

二、什么是范数

先来了解一下什么是范数,这有利于函数的使用。

首先要知道,范数是一个标量,它是对向量(或者矩阵)的度量

范数包含 0 范数、1范数、2范数…….. P范数。

其中:

0 范数,表示向量中非零元素的个数。

1 范数,表示向量中各个元素绝对值之和。

2 范数,表示向量中各个元素平方和 1/2 次方,L2 范数又称 Euclidean 范数或者 Frobenius 范数。

p 范数,表示向量中各个元素绝对值 p 次方和 1/p 次方

三、np.linalg.norm() 的用法

1.np.linalg.norm() 的官方文档

有了基础知识,我们来看看np.linalg.norm() 的用法

norm(x, ord=None, axis=None, keepdims=False)

其中:

x,表示要度量的向量

ord,表示范数的种类,默认为2 范数。ord = np.inf 表示无穷范数

axis, axis=0 表示按列向量来进行处理,求多个列向量的范数; axis =1 表示按行向量来进行处理,求多个行向量的范数

keepdims:表示是否保持矩阵的二位特性,True表示保持,False表示不保持,默认为False

注意:对于向量而言,有所不同

ord=None,表示求整体的矩阵元素平方和,再开根号
ord=1,表示求列和的最大值
ord=2,|λE-ATA|=0,求特征值,然后求最大特征值的算术平方根
ord为无穷大,表示求行和的最大值

 

2. 例子

1 一个二行二列的矩阵

import numpy as np
x = np.array([[1, 2],[3,4]])
np.linalg.norm(x)

输出结果:

        5.477225575051661

2 改变参数 ord

# 矩阵列相加取最大
np.linalg.norm(x, ord=1)

# 最大特征值的算术平方根
np.linalg.norm(x, ord=2)

# 矩阵行相加取最大
np.linalg.norm(x,ord = np.inf)

输出结果:

        6.0

        5.464985704219043

        7.0 

3 改变参数 axis

# 求多个列向量的范数
np.linalg.norm(x,ord = 1 ,axis=0)
# 求多个行向量的范数
np.linalg.norm(x,ord = 1 ,axis=1)

输出结果:

        array([4., 6.])

        array([3., 7.])

改变参数 keepdims

np.linalg.norm(x,ord = 1 ,axis=0, keepdims=True)

输出结果:

        array([[4., 6.]])

注意 keepdims = True 时,输出的是一个二维数组。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年3月6日 上午9:05
下一篇 2023年3月6日 上午9:06

相关推荐