Python与线性代数基本概念
在Python中使用Numpy创建向量:
x = np.array([1, 2, 3, 4])
创建3 x 3矩阵
B = np.array([[1, 2],[3, 4],[5, 6]])
Shape形状,也可称为维度,表示矩阵中每个维度的具体数值;
B.shape 3 x 2
转置
行向量可转置为列向量,列向量转置为行向量
如为方阵转置后行数列数不变,对于非方阵,2 x 3矩阵转置后为3 x 2矩阵
B_t = A.T
检查转置后形状shape
B_t.shape
矩阵加法
矩阵相加为两个矩阵对应的元素相加;
A = np.array([1,2],[3,4])
B = np.array([4,5],[5,6])
C = A + B = [[5, 7],[8, 10]]
如标量与矩阵相加规则为:标量与矩阵中对应的每个元素相加;
广播
广播为Numpy的机制,使得Numpy可以处理各个不同形状(shape)之间的操作,较小的阵列将会被扩充以匹配较大的阵列形状;
就如上面使用标量与矩阵做相加元素,实际上Numpy把标量转成了与矩阵相同维度的矩阵与该矩阵进行相加;
比如一个3 x 2 矩阵与一个3 x 1矩阵相加,Numpy会自动把3 x 1矩阵复制一列形成3 x2矩阵与该3 x 2矩阵相加,使得两个矩阵的shape能够匹配;
矩阵乘法
矩阵乘法与矩阵加法规则并不一样,不是两个矩阵对应的元素相乘,而是计算矩阵行与列对应元素乘积之和;也称为点积;
矩阵乘法是否有定义,前一个矩阵的列数必须等于后一个矩阵的行数;如n x p与p x m两个矩阵相乘结果为n x m矩阵;
两个矩阵相乘可以看作是第一个矩阵的每一行与第二个矩阵的每一列之间的点积;
可以使用Numpy的dot()函数计算两个矩阵的乘积;
A = [[2, 3],[3, 4]]
B = [[1, 1],[3, 4]]
C = np.dot(A, B)
也可以使用 C =A.dot(B)
线性方程组
线性方程组为线性代数用来解决的重要问题之一,
x1 – 2*x2+x3 = 0
2*x2 - 8*x3 = 8
-4*x1 + 5*x2 + 9*x3 = -9
矩阵B每行为上述方程的常数,A矩阵每行为方程组中的每个方程系数;
A = np.array([[1 ,-2 ,1],[0 ,2 ,-8],[-4 ,5 9]])
B = np.array([0 ,8 ,-9])
Y= np.linalg.solve(A,B)= [29. 16. 3.]
单位矩阵
任何向量与单位矩阵相乘结果为他本身,单位矩阵:所有沿主对角线元素都是1,而其他所有位置元素都为0;
np.identity(5)
逆矩阵
A为方阵,存在矩阵B使得AB=BA=I,I为单位矩阵,则称B为的逆矩阵;
对于Ax=b有
A = np.array([[2, 3], [4,5]])
A逆矩阵A_inv= np.linalg.inv( A )
I = A_inv.dot( A )
行列式
A = np.array([1 ,2 ],[4 ,5 ])
D = np.linalg.det(A)
范数
0范数 向量中非零元素个数
x = np.array([1, 0, -5])
n = np.linalg.norm(x, ord = 0)
1范数 向量中所有元素绝对值之和
x = np.array([3, 0, -4])
n1 = np.linalg.norm(x, ord = 1)
2范数 向量各个元素平方和求平凡根
x = np.array([3, 0, -4])
n2 = np.linalg.norm(x, ord = 2)
矩阵的范数
1范数 又称列范数,矩阵列向量中绝对值之和的最大值;
x = np.array([[-1, 1, 0],[-4, 3, 0],[1, 0, 1]])
n1 = np.linalg.norm(x, ord = 1)
2范数 又称谱范数,A_t A 矩阵的最大特征值的开平方
a = np.array([[-2, 1, 1],[-4, 3, 0],[1, 0, 2]])
ata = np.matmul(a.T, a)
print ("lambda ", np.linalg.eigvals(ata))
n2 = np.linalg.norm(a, ord = 2)
print('norm_2 ', n2, np.sqrt(30.55403188))
F范数,Frobenius范数,计算方式为矩阵元素的绝对值的平方和再开方。
x = np.array([[-1, 2, 0],[-4, 3, 0],[1, 0, 2]])
nfro = np.linalg.norm(x, ord = 'fro')
∞范数,又称行和范数, 即矩阵行向量中绝对值之和的最大值。
x = np.array([[-1, 2, 0],[-4, 3, 0],[1, 0, 2]])
ninf = np.linalg.norm(x, ord = np.inf)
Python与线性代数基本概念的更多相关文章
- Python学习:基本概念
Python学习:基本概念 一,python的特点: 1,python应用场景多;爬虫,网站,数据挖掘,可视化演示. 2,python运行速度慢,但如果CPU够强,这差距并不明显. 3,严格的缩进式编 ...
- python面向对象编程 -- 基本概念
面向对象的编程简要概括就是将要处理的问题抽象为数据和操作的集合,用类对其进行封装.其中数据和操作都称为类的属性,它们是一般是不变的. 对类进行实例化生成我们所说的对象,对象有自己的属性.对象的属性一般 ...
- python 中面向对象的概念
原文 域和作用空间 本地域,函数域(nonlocal)和 全局域(global) def scope_test(): def do_local(): spam = "local spam&q ...
- Python错误和异常概念(总)
转载请标明出处: http://www.cnblogs.com/why168888/p/6435956.html 本文出自:[Edwin博客园] Python错误和异常概念(总) 1. 错误和异常的处 ...
- 『Python题库 - 简答题』 Python中的基本概念 (121道)
## 『Python题库 - 简答题』 Python中的基本概念 1. Python和Java.PHP.C.C#.C++等其他语言的对比? 2. 简述解释型和编译型编程语言? 3. 代码中要修改不可变 ...
- 利用Python学习线性代数 -- 1.1 线性方程组
利用Python学习线性代数 -- 1.1 线性方程组 本节实现的主要功能函数,在源码文件linear_system中,后续章节将作为基本功能调用. 线性方程 线性方程组由一个或多个线性方程组成,如 ...
- python里类的概念
Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...
- 用 python 解决线性代数中的矩阵运算
用 python 解决线性代数中的矩阵运算 矩阵叉乘 矩阵求逆 矩阵转置 假定AX=B,求解未知矩阵X 矩阵的行列式值|matrix| 未完待续..... import sys from PyQt5. ...
- python基础整理----基本概念和知识
整理一下python的基本概念和知识, 主要用python3为语法标准. python介绍 一种面向对象的解释性计算机设计语言,具有丰富和强大的库. python定位:"优雅".& ...
随机推荐
- vue router路由跳转了,但是页面没有变(已解决)
小白学习 router.js:两个组件之间跳转 但是路由变了,页面没有改变的原因是因为app.vue里面没有router-view(很关键)
- 快速搭建 SpringCloud 微服务开发环境的脚手架
本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 SpringCloud 项目. 本文作者:HelloGitHub-秦人 HelloGitHub ...
- LoadRunner 录制问题集锦
关键词:各路录制小白汇集于此 虽然知道君对录制不感冒,但总是看到扎堆的人说这些问题,忍不住要站出来了. 百度虽好,帮助了很多小白,但关键是百度并没有排除错误内容,经过历史的几年传播,错的都快变对的了, ...
- 微服务 consul使用
前言 常见的注册中心有zookeeper .eureka.consul.etcd.从生态发展.便利性.语言无关性等角度来综合考量,选择consul,多数据中心支持,支持k-v能力,可扩展为配置中心.g ...
- C#学习笔记05--枚举/结构体
一.枚举 当变量的取值范围是固定的几个时, 就可以使用枚举类型, 这样会更加简洁方便 1.1.定义: 访问修饰符 enum 枚举类型名 { 成员1, 成员2, 成员3, ... } publi ...
- C语言I博客作业11
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10132 我在这个课程的 ...
- 使用 colgroup 和 col 实现响应式表格
Table 在项目使用中十分频繁,特别是在后台管理系统中,table 无疑是数据展示的第一公民,在早些年的网页中,table 也是网页布局的第一选择,然后使用好 table 并不容易,其它有很多子元素 ...
- python内存-fromkeys
fromkeys 这个方法涉及到可变不可变类型,记录下测试代码 不可变类型 #可变类型-list x=["zx","zx2","zx3"] ...
- Python内置类属性,元类研究
Python内置类属性 我觉得一切都是对象,对象和元类对象,类对象其实都是一样的,我在最后进行了证明,但是只能证明一半,最后由于元类的父类是type,他可以阻挡对object属性的访问,告终 __di ...
- synchronized被这么问,谁能受得了
synchronized是面试中经常会被问到的知识点,相关的问题点也很多,问题答案涉及的知识点也很多,有经验的面试官就会顺着你的答案不断追问一下,下面的对话场景就是相关面试题的连环炮. 面试官:说一下 ...