- 范数的定义
- $L_0$ 范数
- $L_1$ 范数
- $L_2$ 范数
- $L_\infty $ 范数
- Python实现
范数的定义
假设向量 $\boldsymbol{x}=[x_1, x_2, …, x_n]$,那么 向量 $\boldsymbol{x}$ 的 $L_p$ 范数定义如下:
$L_0$ 范数
当 $p=0$ 时,0范数为:
根据定义,0范数表示的是向量 $\boldsymbol{x}$ 中的非零元素的个数,其等价于 $|\boldsymbol{x}|_{0}=\operatorname{Count}(\{i | x_{i} \not= 0\})$。
$L_1$ 范数
当 $p=1$ 时,1范数为:
L1范数有很多的名字,例如我们熟悉的曼哈顿距离、最小绝对误差等。使用L1范数可以度量两个向量间的差异,如绝对误差和(Sum of Absolute Difference):
$L_2$ 范数
当 $p=2$ 时,2范数为:
像 L1 范数一样,L2 也可以度量两个向量间的差异,如平方差和(Sum of Squared Difference):
无穷范数
当 $p=\infty$ 时,就是我们常说的无穷范数
Python 实现
Python 里面的这个库 linalg=linear
里面有范数的计算,可以这么记这个库的名字:
linalg = linear(线性)+algebra(代数),norm则表示范数。
1 | x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False) |
简单列一个表:
参数 | 说明 | 计算 |
---|---|---|
默认 | L2 范数 | $\sqrt{x_1^2+x_2^2+\ldots+x_n^2}$ |
ord=2 | L2 范数 | 同上 |
ord=1 | L1 范数 | $\lvert x_1 \rvert +\lvert x_2 \rvert+\ldots+\lvert x_n \rvert$ |
ord=np.inf | 无穷范数 | $\max(\{\lvert x_1 \rvert, \lvert x_2 \rvert, …, \lvert x_n \rvert\})$ |
代码示例:
1 | import numpy as np |
输出结果为:
1 | keepdims = False |
需要注意的是,linalg这个库里面矩阵的范数和向量的范数不太一样,这一点目前没用到,以后如有需要再深究。