一、代数是什么

  代数->数的抽象表示->向量空间(线性空间)

  线代->线性代数

关系:

  向量空间之间和内部转换是通过线性变换。

实数——一维空间的点

复数——二维空间的点

  如果两个向量的组合可以生成平面,则要求两个向量要线性无关。

  推广一下,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——黑板客老师课程学习的更多相关文章

  1. python爬虫——黑板客老师课程学习

    程序: 目标url 内容提取 表现形式 为什么: 大数据——数据膨胀,信息太多了,不知道哪些信息适合你,例如谷歌搜索引擎. 垂直行业搜索——某一个行业的搜索,与搜索引擎最大的区别:搜索引擎是告诉你哪些 ...

  2. python类——黑板客老师课程学习

    1.基本语法 class class_name(base_class):  base_class是它继承的父类 class_var def methods(self,args): statements ...

  3. pyhton函数——黑板客老师课程学习

    1.基本语法 语法: def func_name (arguments)  定义 statements return x,y x,y=func_name(para)   调用 作用域: 可以给内置的函 ...

  4. python画图—黑板客老师课程学习

    1.介绍 把每个图都看作一个对象,图中的每一个部分也是对象.——所有的一切都是对象. 工具——ipython notebook 是python里边用的最多的2D&3D的会图库,开源免费库,使用 ...

  5. python计算机视觉——黑板客老师课程学习

    机器学习的一个应用方向,是如何让机器去理解图像.包括对图像里物体的识别,跟踪和测量. 能做什么——无人驾驶汽车.人脸识别.车牌识别手势识别(游戏方向) PIL静态的库 OpenCV 动态的库 impo ...

  6. python变量——黑板客老师课程学习

    1.和C++.Java的区别: 动态类型:不需要声明a的类型. a=34 type(a) <type  ‘int’> 一切皆对象: 4 2.数字: 自动转换类型:a=34  A=3.14 ...

  7. python语句表达式——黑板客老师课程学习

    1.赋值 多重赋值: a,b=1,2 a,b=’beijing’,’sh’ a,b=’bj’ a,b=(1,2) a,b=[1,2] …… 2.输入输出 输入: raw_input()   原始输入 ...

  8. "做中学"之“极客时间”课程学习指导

    目录 "做中学"之"极客时间"课程学习指导 所有课程都可以选的课程 Java程序设计 移动平台开发 网络攻防实践 信息安全系统设计基础 信息安全专业导论 极客时 ...

  9. 王之泰《面向对象程序设计(java)》课程学习总结

    第一部分:理论知识学习部分 总复习纲要 1. Java语言特点与开发环境配置(第1章.第2章) 2. Java基本程序结构(第3章) 3. Java面向对象程序结构(第4章.第5章.第6章) 4. 类 ...

随机推荐

  1. Python解析命令行读取参数 -- argparse模块

    在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数.万能的python就自带了argprase包使得这一工作变得简单而规范.PS:optparse包是类似的功能,只不过写 ...

  2. 如何将win7变为wifi热点

    以前经常使用connectify软件一键设置win7热点,但发现该软件影响开机速度,于是研究了一下win7自带的wifi功能,简单方便,分享如下: 1.打开命令提示符: [开始]/搜索框中输入“cmd ...

  3. PL/SQL使用技巧

    1.如何在PL/SQL developer中查看所连接的oracle的版本答:select * from v$version;或者在pl/sql developer 里查看[Reports]——> ...

  4. 用gulp建立自动工具,完成软件的编译、测试、打包和发布流程

    gulp以task的形式组织任务. 在每一个任务中,从gulp.src()指定文件源头开始,经过一系列pipe管道处理, 最后结果保存到gulp.dest指定的目录中,(或输出到stream) 任务的 ...

  5. KindEditor 编辑器使用方法

    http://kindeditor.net/docs/usage.html 编辑器使用方法 1. 下载编辑器 下载 KindEditor 最新版本,下载之后打开 examples/index.html ...

  6. Openlayers简介

    OpenLayers 是由MetaCarta公司开发的,用于WebGIS客户端的 JavaScript包,目前的最高版本是2.5 V,通过BSD License 发行.它实现访问地理空间数据的方法都符 ...

  7. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

  8. oracle计算是否是同一周

    函数已经解决跨年问题 select to_char(date'2016-12-31','iW') from dual; select to_char(date'2017-01-01','iW') fr ...

  9. SqlServer实现先将所有数据排好序再进行分页

    平时,我们对数据进行分页,然后将分页后的数据再进行排序输出.这样做只是针对每次请求,也就是前TOP个数据进行了排序,并不是将数据库中的所有的数据进行了排序.当我们需要将数据库中的所有数据排序后在进行分 ...

  10. webpack使用笔记

    webpack简介 CommonJS和AMD是用于JavaScript模块管理的两大规范,前者定义的是模块的同步加载,主要用于NodeJS:而后者则是异步加载,通过requirejs等适用于前端.np ...