Python中范数计算以及numpy矩阵的运算

您所在的位置:网站首页 python矩阵运算结论 Python中范数计算以及numpy矩阵的运算

Python中范数计算以及numpy矩阵的运算

2024-06-06 08:12| 来源: 网络整理| 查看: 265

Python中范数计算以及numpy矩阵的运算

文章目录 Python中范数计算以及numpy矩阵的运算一、范数1.1 定义: 二、numpy中范数计算2.1 实际案例 三、numpy矩阵运算3.1 numpy矩阵加减3.2 numpy矩阵乘除3.3 矩阵乘法运算

一、范数 1.1 定义:

​ 范数(norm)是数学中的一种基本概念。在泛函分析中,它定义在赋范线性空间中,并满足一定的条件,即①非负性;②齐次性;③三角不等式。它常常被用来度量某个向量空间(或矩阵)中的每个向量的长度或大小。 ​ 最常见的范数就是p范数。若 x = [ x 1 , x 2 . . . x n ] T x=[x_1,x_2...x_n]^T x=[x1​,x2​...xn​]T,那么 ∥ x ∥ p = ( ∣ x 1 ∣ p + ∣ x 2 ∣ p + . . . + ∣ x n ∣ p ) 1 p \left \| x \right \|_p=(|x_1|^p+|x_2|^p+...+|x_n|^p)^{\frac{1}{p}} ∥x∥p​=(∣x1​∣p+∣x2​∣p+...+∣xn​∣p)p1​ ​ 当$p=1,2,\infty $时分别是以下集中情况:

∥ x ∥ 1 = ∣ x 1 ∣ + ∣ x 2 ∣ + . . . + ∣ x n ∣ ∥ x ∥ 2 = ( ∣ x 1 ∣ 2 + ∣ x 2 ∣ 2 + . . . + ∣ x n ∣ 2 ) 1 2 ∥ x ∥ p = m a x ( ∣ x 1 ∣ , ∣ x 2 ∣ , . . . , ∣ x n ∣ ) \left \| x \right \|_1=|x_1|+|x_2|+...+|x_n|\\ \left \| x \right \|_2=(|x_1|^2+|x_2|^2+...+|x_n|^2)^{\frac{1}{2}}\\ \left \| x \right \|_p=max(|x_1|,|x_2|,...,|x_n|) ∥x∥1​=∣x1​∣+∣x2​∣+...+∣xn​∣∥x∥2​=(∣x1​∣2+∣x2​∣2+...+∣xn​∣2)21​∥x∥p​=max(∣x1​∣,∣x2​∣,...,∣xn​∣) 常用的三种范数的范数矩阵:

​ 1范数:列和范数,每一列元素之和的最大值。 在这里插入图片描述 ​ 2范数:谱范数,矩阵中所有元素平方和开根号。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dPSIXuSo-1651332821558)(写文章.assets/image-20220430221456786.png)] ​ ∞ \infty ∞范数:行和范数,每一行之和的最大值。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bGOCOg1d-1651332821560)(写文章.assets/image-20220430221737338.png)]

二、numpy中范数计算

1)基本语法:

np.linalg.norm(x,ord=None,axis=None) # x代表矩阵,ord代表范数类型 参数范数类型ord=2或None二范数ord=1一范数ord=np.Inf无穷范数

2)axis为处理方向:

axis=1时表示按行向量处理,求多个行向量的范数axis=0时表示按列向量处理,求多个列向量的范数。 2.1 实际案例

案例一:对矩阵求范数

import numpy as np a=np.array([[1,2,3],[4,5,6]]) print("矩阵:",a) a1=np.linalg.norm(a,ord=1) print("第一范式:",a1) a2=np.linalg.norm(a,ord=2) print("第二范式",a2) a3=np.linalg.norm(a,ord=np.Inf) print("无穷范式",a3)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eAZM6SIV-1651332821561)(写文章.assets/image-20220430223056788.png)] 案例二:对矩阵的行向量求范数

import numpy as np a=np.array([[1,2,3],[4,5,6]]) print("矩阵:",a) a1=np.linalg.norm(a,ord=1,axis=1) print("第一范式:",a1) a2=np.linalg.norm(a,ord=2,axis=1) print("第二范式",a2) a3=np.linalg.norm(a,ord=np.Inf,axis=1) print("无穷范式",a3)

在这里插入图片描述 案例三:对矩阵的列向量求范数

import numpy as np a=np.array([[1,2,3],[4,5,6]]) print("矩阵:",a) a1=np.linalg.norm(a,ord=1,axis=0) print("第一范式:",a1) a2=np.linalg.norm(a,ord=2,axis=0) print("第二范式",a2) a3=np.linalg.norm(a,ord=np.Inf,axis=0) print("无穷范式",a3)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oRC799ae-1651332821565)(写文章.assets/image-20220430223436433.png)]

三、numpy矩阵运算

​ numpy矩阵之间的四则运算,根据两矩阵之间的各个元素一一对应进行。例如: [ 1 2 3 4 5 6 ] + [ 1 2 3 ] = [ 2 4 6 5 7 9 ] \begin{bmatrix} 1 &2 &3 \\ 4 &5 &6 \end{bmatrix}+\begin{bmatrix} 1 &2 &3 \end{bmatrix}=\begin{bmatrix} 2 &4 &6 \\ 5 &7 &9 \end{bmatrix} [14​25​36​]+[1​2​3​]=[25​47​69​] ​ 如果说要进行线性代数中矩阵相乘需要调用包中的.dot方法进行运算。

3.1 numpy矩阵加减 import numpy as np a=np.array([[1,2,3],[4,5,6]]) b=np.array([2,2,2]) print("两矩阵相加:\n",a+b) print("两矩阵相减:\n",a-b)

在这里插入图片描述

3.2 numpy矩阵乘除 import numpy as np a=np.array([[1,2,3],[4,5,6]]) b=np.array([2,2,2]) print("两矩阵相除:\n",a/b) print("两矩阵相乘:\n",a*b)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4JFbhxFH-1651332821567)(写文章.assets/image-20220430231517517.png)]

3.3 矩阵乘法运算 import numpy as np a=np.array([[1,2,3],[4,5,6]]) c=np.array([[2],[2],[2]]) print("矩阵乘法运算\n",np.dot(a,c))

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q9uN1Nsr-1651332821567)(写文章.assets/image-20220430233141948.png)]



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3