线性代数和numpy——黑板客老师课程学习
一、代数是什么
代数->数的抽象表示->向量空间(线性空间)
线代->线性代数
关系:
向量空间之间和内部转换是通过线性变换。
实数——一维空间的点
复数——二维空间的点
如果两个向量的组合可以生成平面,则要求两个向量要线性无关。
推广一下,N维空间里点可以用N个线性无关的向量来表示。这N个向量就是这个平面的基。
向量的封闭——对加法和数乘封闭。
向量V中任意两个向量a,b加法a+b,仍然在V中,实数乘法x*b,仍然也在V中。
线性相关——其中的一个向量可以用其他的向量表示出来。
矩阵操作在python里编程依赖一个最常用的库——numpy
1、矩阵的创建
a=np.arange(,)
a=np.array([,,,,])
print a, a.dtype, a.shape, a.size, a.ndim

np.arange类似range函数
np.array用来生成矩阵
dtype是数据类型,有int64, complex, uint16等
shape是个元组属性,表示每一维的宽度
size是所有元素个数
ndim是维数
b=np.array([,,],dtype='float16') # int64, complex, uint16......
print b, b.dtype

m=np.array([np.arange(),np.arange()])
print m, m.shape, m.size

# 每一个[]代表一维,比如
# [[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]], 代表矩阵的维度是(2,2,3)
# 其中第一个2,代表最外层的两个[],第二个2代表第二层[],第三个3代表最里层的维度。
n=np.array([[1,2,3,4],[5,6,7,8]])
print n, n[0,2], n[1,1] m=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print m.shape

x=m.ravel()
y=n.flatten()
print x
print y

ravel()和flatten()看起来效果一样,都是把矩阵展平了。它们的区别在于
ravel()返回的是原有数据的一个映射(view),没有分配新的存储
flatten()返回的是新的数据
因此如果我们改变它们的值,就可以看出区别
numpy还有一些函数有这样的区别,关键在于判断函数返回是原数据的映射还是返回新的数据。
……
等等一共三十道题,详情可参阅黑板课老师的notebook。
正交:A矩阵的转置乘以B等于0。
可逆:方阵,行数等于列数
列向量线性无关
最小二乘法——投影解释
二维平面上,一个点向一条直线投影。
扩展到N维里边,就是让一个直线拟合若干个点,让这些点到线的距离和最短。y=ax+b
但有的时候,欠拟合,可以往更高维的空间投影,y=ax^3+bx^2+cx+d,或者更高维的空间。
但维数过高容易过拟合。
行列式
从平行四边形的面积推出来。
特征值和特征向量
AX=λX——向量X经过向量A的线性变换,得到的是向量A的倍数。λ称为A的特征值,X称为A的特征向量。
什么意思呢?X经过A的变换,得到的是X的方向的伸缩。
在matlab里边有例子,eigshow,然后运行,推重两个向量重合时,重合的向量就是特征向量。两个向量成一条直线的时候,也会有特征向量。然后反方向,所以有四组。从图形中看,是一个椭圆和圆的交合。
如何求特征值和特征向量?
如何用特征值和特征向量来求Fibonacci序列
线性代数和numpy——黑板客老师课程学习的更多相关文章
- python爬虫——黑板客老师课程学习
程序: 目标url 内容提取 表现形式 为什么: 大数据——数据膨胀,信息太多了,不知道哪些信息适合你,例如谷歌搜索引擎. 垂直行业搜索——某一个行业的搜索,与搜索引擎最大的区别:搜索引擎是告诉你哪些 ...
- python类——黑板客老师课程学习
1.基本语法 class class_name(base_class): base_class是它继承的父类 class_var def methods(self,args): statements ...
- pyhton函数——黑板客老师课程学习
1.基本语法 语法: def func_name (arguments) 定义 statements return x,y x,y=func_name(para) 调用 作用域: 可以给内置的函 ...
- python画图—黑板客老师课程学习
1.介绍 把每个图都看作一个对象,图中的每一个部分也是对象.——所有的一切都是对象. 工具——ipython notebook 是python里边用的最多的2D&3D的会图库,开源免费库,使用 ...
- python计算机视觉——黑板客老师课程学习
机器学习的一个应用方向,是如何让机器去理解图像.包括对图像里物体的识别,跟踪和测量. 能做什么——无人驾驶汽车.人脸识别.车牌识别手势识别(游戏方向) PIL静态的库 OpenCV 动态的库 impo ...
- python变量——黑板客老师课程学习
1.和C++.Java的区别: 动态类型:不需要声明a的类型. a=34 type(a) <type ‘int’> 一切皆对象: 4 2.数字: 自动转换类型:a=34 A=3.14 ...
- python语句表达式——黑板客老师课程学习
1.赋值 多重赋值: a,b=1,2 a,b=’beijing’,’sh’ a,b=’bj’ a,b=(1,2) a,b=[1,2] …… 2.输入输出 输入: raw_input() 原始输入 ...
- "做中学"之“极客时间”课程学习指导
目录 "做中学"之"极客时间"课程学习指导 所有课程都可以选的课程 Java程序设计 移动平台开发 网络攻防实践 信息安全系统设计基础 信息安全专业导论 极客时 ...
- 王之泰《面向对象程序设计(java)》课程学习总结
第一部分:理论知识学习部分 总复习纲要 1. Java语言特点与开发环境配置(第1章.第2章) 2. Java基本程序结构(第3章) 3. Java面向对象程序结构(第4章.第5章.第6章) 4. 类 ...
随机推荐
- Python解析命令行读取参数 -- argparse模块
在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数.万能的python就自带了argprase包使得这一工作变得简单而规范.PS:optparse包是类似的功能,只不过写 ...
- 如何将win7变为wifi热点
以前经常使用connectify软件一键设置win7热点,但发现该软件影响开机速度,于是研究了一下win7自带的wifi功能,简单方便,分享如下: 1.打开命令提示符: [开始]/搜索框中输入“cmd ...
- PL/SQL使用技巧
1.如何在PL/SQL developer中查看所连接的oracle的版本答:select * from v$version;或者在pl/sql developer 里查看[Reports]——> ...
- 用gulp建立自动工具,完成软件的编译、测试、打包和发布流程
gulp以task的形式组织任务. 在每一个任务中,从gulp.src()指定文件源头开始,经过一系列pipe管道处理, 最后结果保存到gulp.dest指定的目录中,(或输出到stream) 任务的 ...
- KindEditor 编辑器使用方法
http://kindeditor.net/docs/usage.html 编辑器使用方法 1. 下载编辑器 下载 KindEditor 最新版本,下载之后打开 examples/index.html ...
- Openlayers简介
OpenLayers 是由MetaCarta公司开发的,用于WebGIS客户端的 JavaScript包,目前的最高版本是2.5 V,通过BSD License 发行.它实现访问地理空间数据的方法都符 ...
- 《疯狂Java讲义》(一) ---- 关于学习Java的反思
"听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...
- oracle计算是否是同一周
函数已经解决跨年问题 select to_char(date'2016-12-31','iW') from dual; select to_char(date'2017-01-01','iW') fr ...
- SqlServer实现先将所有数据排好序再进行分页
平时,我们对数据进行分页,然后将分页后的数据再进行排序输出.这样做只是针对每次请求,也就是前TOP个数据进行了排序,并不是将数据库中的所有的数据进行了排序.当我们需要将数据库中的所有数据排序后在进行分 ...
- webpack使用笔记
webpack简介 CommonJS和AMD是用于JavaScript模块管理的两大规范,前者定义的是模块的同步加载,主要用于NodeJS:而后者则是异步加载,通过requirejs等适用于前端.np ...