目录

《程序员的数学3:线性代数》

1. 向量 & 矩阵

向量(数组)的元素类型可以通过dtype属性获得。上面例子中的参数序列的元素都是整数,因此所创建的数组的元素类型也是整数,并且是32bit的长整型。可以通过dtype参数在创建时指定元素类型:

对,向量与 np.ndarray 不是同一个东西——向量就是一维数组。在几何意义上,向量表示的是多维空间中的有向线段,数组的每个数据代表了一个维度的参数。

ndarray 可以是多维数组,更像是Matrix。

1.1. 问: np.ndarraynp.matrix 的区别

1.2. 向量空间

把上图中的刻度去掉,就是向量空间。

2. 算术运算

注意:numpy.ndarray的乘积运算,并不等同于线性代数中两个向量的乘积运算。

2.1. 为什么线性代数定义的乘积运算不按照加法的规则(按位相乘)进行?

线性代数的乘法运算(矩阵乘积),几何意义表示坐标系变换。

2.2. 数组广播(broadcasting)

对于不同大小的矩阵,只有两个矩阵的维度同为1时(例如矩阵只有一列或一行),我们才能进行这些算术运算,在这种情况下,NumPy使用广播规则(broadcast)进行操作处理:

3. 矩阵乘积

3.1. 矩阵与向量的乘积

两种情形:

矩阵 * 列向量 = 新向量(列)

在这个过程中,向量代表的是一个有向线段,而矩阵则表示一个转换坐标系(或者称之为“线性的函数映射”),通过乘法运算后,向量被映射成了另一个坐标系中的样子。

所以,看懂了矩阵乘积,就能明白矩阵的本质——“矩阵就是映射”。

3.1.1. 除了坐标转换,矩阵乘积还有什么用?

3.1.2. 矩阵 * 矩阵

矩阵之间相乘,其本质就是映射的合成。

其实上述公式可以做如下转换:

这是啥?其本质就是:

读懂这个本质,就能知道,矩阵乘法符合结合律:

C(BA) = (CB)A

但不符合交换律:

为什么矩阵乘法不符合交换律?

考虑A是一个旋转的坐标变换,而B则代表横向拉伸。那么先旋转后拉伸与先拉伸后旋转,结果当然不同。

3.1.3. 一些特例

4. 点积乘法

5. 特殊矩阵

  • 零矩阵

    零矩阵表示的映射是所有点都映射到原点的映射。

  • 单位矩阵

    “什么都没变”的映射。

  • 对角矩阵

    对角矩阵表示的映射是“沿着坐标轴伸缩”,其中对角元素就是各轴伸缩的倍率。

  • 分块矩阵

  • 正交矩阵

  • 对称矩阵

5.1. 转置矩阵

5.1.1. 共轭转置

6. 用矩阵表示各种关系

《程序员的数学3》p53_1.2.10

6.1. 高阶差分

6.2. 高阶微分

6.3. 消除常数项

7. 行列式

行列式求得的是一个数,几何意义为(面积、体积...)的扩大率。

行列式只针对方阵而言,非方阵矩阵不存在行列式。

7.1. 行列式的性质

常数乘法不变性

转置矩阵的行列式

多重线性

注意:多重性质都是针对1列定义的:

交替性

7.2. 行列式的计算

from numpy import linalg
n = linalg.det(A)

8. 逆矩阵 & 秩

如果 y = Ax + b顺问题 ,那么,通过 y 求得 x 的问题就是 逆问题

逆矩阵就是把矩阵A映射的向量还原回去的映射。简单的说,就是“逆映射”。

  • 正则矩阵:存在逆矩阵的方阵(可逆矩阵,非奇异矩阵)
  • 奇异矩阵:反之~

8.1. 逆矩阵的性质

8.2. 对角矩阵的逆矩阵

8.3. 求解逆矩阵(numpy)

from numpy import linalg
invA = linalg.inv(A)

8.4. 秩

秩,体现的是不相关的维度数。

8.4.1. “秩”是图像经过矩阵变换之后的空间维度

  • 如果经过矩阵 A 变换后的结果是一个平面,空间没有被压缩扁平化,那么该转换可逆,称为非奇异矩阵
  • 非奇异矩阵的秩与列数相等,称之为满秩(Full Rank)矩阵
  • 对于满秩矩阵来说, 变换后唯一落在原点的就是零向量本身

  • 当变换的结果是一条直线,该矩阵是一维的,rank(A) = 1 ,此时矩阵不可逆, 称为奇异矩阵
  • 非满秩矩阵,会将空间压缩到更低的一维直线上,也就是由嫩绿色直线上一系列的向量在变换后成为零向量

  • 当变换的结果是压缩到原点,则该矩阵是零维的,称 rank(A) = 0

8.4.2. “秩”是列空间的维度

“秩”就是矩阵所代表空间的不相关的维度数量。而不相关的的维度才构成空间,所以,“秩”代表空间的维度。

8.4.3. 话说回来,为啥叫做“秩”

知乎: 非叫“秩”不可,有秩才有解

举个例子就很容易理解,大家排队买票。如果大家互相不认识,那就会一个排一个,非常有秩序。然而,如果突然来了一个与队伍前面的人认识的人,这个人又不自觉,非要插队。那后面的人肯定要有意见了,说你要是这样我前面还有认识的人呢,你插我也插,这样整个队伍就乱掉了,谁也买不成。

通过这个例子,可得以下结论:彼此不认识,那就不相关,就有秩序,问题就好解决;反之,彼此相关,就没有秩序,问题就不好解决。

所以,数学家们定义,矩阵中的最大的不相关的向量的个数,就叫秩,可以理解为有秩序的程度。

从社会学的角度在考虑一下,政府机关是讲人际关系的地方,可谓是关系错综复杂,通常都是近亲繁殖。显然,这些部门,用矩阵来说,就不满秩,秩非常小。可以想象这些地方的工作肯定是搞不好的,因为没有秩序。所以想找个好单位,满秩可以作为一项评价指标哦~

8.4.4. 求解秩(numpy)

from numpy import linalg
n = linalg.matrix_rank(A)

8.5. 维数定理

  • 向量空间的维数等于对应矩阵的秩

  • 两个有限维子空间的和的维数定理: dim(U1+U2) = dimU1 + dimU2 - dim(U1 ∩ U2)

  • 两个有限集合元素个数的容斥原理: card(U1∪U2) = cardU1 + cardU2 - card(U1 ∩ U2)

9. 线性方程组

10. 特征值 & 特征向量

线性代数的28法则:作为程序员掌握这些API就够用了……的更多相关文章

  1. 工资8000以下的Android程序员注意了!接下来要准备面对残酷现实了……

    最近在知乎看到一个测试,特扎心: 以下三种情况,哪个最让你绝望? ❶ 每月工资去掉开销还存不到3千: ❷ 家人突然急病住院,医药费10万: ❸ 同班的家长都在争先恐后给孩子报名各种辅导班.兴趣班,但一 ...

  2. Oracle学习总结(8)—— 面向程序员的数据库访问性能优化法则

    特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...

  3. 挨踢职场求生法则-----我在IT职场打滚超过15年了,从小小的程序员做到常务副总

    摘要我在IT职场打滚超过15年了,从小小的程序员做到常务副总.相对于其它行业,IT职场应该算比较光明的了,但也陷阱重重,本文说说我的亲身体会,希望大家能在IT职场上战无不胜! 通用法则 法则1:忍耐是 ...

  4. .Net程序员学用Oracle系列(28):PLSQL 之SQL分类和动态SQL

    1.SQL 语句分类 1.1.分类方法及类型 1.2.数据定义语言 1.3.数据操纵语言 1.4.其它语句 2.动态 SQL 理论 2.1.动态 SQL 的用途 2.2.动态 SQL 的语法 2.3. ...

  5. 程序员的软实力武器-star法则

    hhh 程序员的表达能力一直被诟病,尤其面试讲述自己的项目的时候 下面的star原则能够帮助你: 所谓STAR原则,即Situation(情景).Task(任务).Action(行动)和Result( ...

  6. GitHub 热点速览 Vol.28:有品位程序员的自我修养

    作者:HelloGitHub-小鱼干 摘要:一个程序员除了技术好,还得品位高,有什么比一个高颜值的 GUI 更能体现你品味的呢?rocketredis 就是一个高颜值.简约的 Redis 管理界面,比 ...

  7. MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式

    MVC的验证(模型注解和非侵入式脚本的结合使用)   @HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客 ...

  8. (转).net程序员转战android第三篇---登录模块之静态登录

    这一篇我将分2个部分记录登录界面,第一部分是静态登录, 这部分将如何从界面布局.控件使用.文件关系.数据验证.登陆实现等5小块记录. 第二部分是动态登录,这块会基于上面的4小块,在数据验证不是静态数据 ...

  9. C/C++程序员面试大纲

    基础篇:操作系统.计算机网络.设计模式一:操作系统 1. 进程的有哪几种状态,状态转换图,及导致转换的事件. 2. 进程与线程的区别. 3. 进程通信的几种方式. 4. 线程同步几种方式.(一定要会写 ...

随机推荐

  1. kubernetes pod的弹性伸缩———基于pod自定义custom metrics(容器的IO带宽)的HPA

    背景 ​ 自Kubernetes 1.11版本起,K8s资源采集指标由Resource Metrics API(Metrics Server 实现)和Custom metrics api(Promet ...

  2. 201771010120 苏浪浪 《面向对象程序设计(java)》第二周学习总结

    理论知识总结 第三章Java基本程序设计结构 1.基本知识:(1)标识符:是由字母.下划线.美元符号和数字组成,且第一个符号不能为数字.(2)关键字:剧啊语言中被赋予特定意义的一些单词.(3)注释 2 ...

  3. COLA的扩展性使用和源码研究

    cola扩展点使用和设计初探 封装变化,可灵活应对程序的需求变化. 扩展点使用 步骤: 定义扩展点接口,类型可以是校验器,转换器,实体: 必须以ExtPt结尾,表示一个扩展点. 比如,我定义一个云枢的 ...

  4. day20 函数闭包与装饰器

    装饰器:本质就是函数,功能是为其他函数添加新功能 原则: 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数添加新功能后,不修改被修饰函数的调用方式 装饰器的知识储备: 装饰器=高阶函数+ ...

  5. JVM调优总结(二)-基本垃圾回收算法

    可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数. ...

  6. 【ubuntu】开机一直“/dev/sda3:clean, XXX files, XXXX blocks”解决方法

    由于该电脑是实验室公用跑模型的机子,在解决过程中,发现是 cuda 导致一直进不了系统.原因是装了两个不同版本的cuda,一个9.2,另一个10.0,因为是公用的,目前尚不清楚,怎么同时装上两个的,也 ...

  7. BUUCTF WEB

    BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...

  8. HttpSession之表单的重复提交 & 验证码

    如果采用 HttpServletResponse.sendRedirct() 方法将客户端重定向到成功页面,将不会出现重复提交问题 1.表单的重复提交 1). 重复提交的情况: ①. 在表单提交到一个 ...

  9. STM32读取Guidance数据——Guidance SDK

    更新记录:2019/11/14    更新STM32(F407VET6)读取Guidance数据 Github地址. 背景:想要将祖传的Guidance用于DJI A3/新固件的N3飞控.DJI已经停 ...

  10. Java实现 蓝桥杯 传纸条

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个mm行nn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运 ...