线性代数与Python
1.向量
向量是指可以加总(以生成新的向量),可以乘以标量(即数字),也可以生成新的向量的对象。
向量是有限维空间的点。
1.1向量例子
如果你有很多人的身高、体重、年龄数据,就可以把数据记为三维向量(height, weight, age)。
如果你教的一个班有四门考试,就可以把学生成绩记为四维向量(exam1, exam2, exam3, exam4)。

1.2向量加法与减法
向量以分量方式(componentwise)做运算。这意味着,如果两个向量v 和w 长度相同,那它们的和就是一个新的向量,其中向量的第一个元素等于v[0] + w[0],第二个元素等于v[1] + w[1],以此类推。(如果两个向量长度不同,则不能相加。)
- 向量加法函数
def vector_add(v, w):
retrun [v_i + w_i for v_i, w_i in zip(v,w)]
- 向量减法函数
def vector_add(v, w):
retrun [v_i - w_i for v_i, w_i in zip(v,w)]
- 多个向量的加法运算
def vector_sum(*vectors):
result = vectors[0]
for vector in vectors[1:]:
result = vector_add(result, vector)
return result
#方法2
import functools import reduce
def vector_sum(*vectors):
return reduce(vector_add, vectors)
1.3向量的乘法
- 标量与向量的乘法
def scalar_multiply(c,v):
return [c * v_i for v_i in v]
- 系列向量的均值
def vector_mean(*vectors):
n = len(vectors)
return scalar_multiply(1/n, vector_sum(vectors))
- 点乘
def dot(v,w):
return sum(v_i * w_i for v_i, w_i in zip(v,w))
- 向量的平方和
def sum_of_squares(v)
return dot(v,v)
- 向量的长度
import math
def magnitude(v)
return math.sqrt(sum_of_squares(v))
- 两点间的距离

def squared_distance(v,w):
return sum_of_squares(vector_subtract(v,w))
def distance(v,w):
return math.squrt(squared_distance(v,w))
# return magnitude(vector_subtract(v,w))
2.矩阵
矩阵是一个二维的数据集合。我们将矩阵表示为列表的列表,每个内部列表的大小都一样,表示矩阵的一行。如果A是一个矩阵,那么A[i][j]就表示第i行第j列的元素。按照数学表达的惯例,我们通常用大写字母表示矩阵。
2.1矩阵例子

2.2矩阵的形状
def shape(A):
num_rows = len(A)
num_cols = len(A[0] if A else 0)
return num_rows, num_cols
如果一个矩阵有n 行k 列,则可以记为n×k 矩阵。我们可以把这个n×k 矩阵的每一行都当作一个长度为k 的向量,把每一列都当作一个长度为n 的向量:

2.3矩阵的创建函数
def make_matrix(num_rows, num_cols, entry_fn):
return [[entry_fn(i, j) for j in range(num_cols)] for i in range(num_rows)]
def is_diagonal(i, j):
return 1 if i == j else 0
make_matrix(5, 5, is_diagonal)
[[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1]]
参考《数据科学入门》
线性代数与Python的更多相关文章
- [转]numpy线性代数基础 - Python和MATLAB矩阵处理的不同
转自:http://blog.csdn.net/pipisorry/article/details/45563695 http://blog.csdn.net/pipisorry/article/de ...
- 数据科学速查手册(包括机器学习,概率,微积分,线性代数,python,pandas,numpy,数据可视化,SQL,大数据等方向)
介绍:https://redstonewill.com/2372/ 项目网址:https://github.com/FavioVazquez/ds-cheatsheets
- 关于python深度学习网站
大数据文摘作品,转载要求见文末 编译团队|姚佳灵 裴迅 简介 ▼ 深度学习,是人工智能领域的一个突出的话题,被众人关注已经有相当长的一段时间了.它备受关注是因为在计算机视觉(Computer Vi ...
- 2018年Fintech金融科技关键词和入行互金从业必懂知识
2018年过去大半,诸多关键词进入眼帘: 5G,消费降级,数据裸奔,新零售,AI,物联网,云计算,合规监管,风控,割韭菜,区块链,生物识别,国民空闲时间以及金融科技. 这些词充斥着我们的生活和时间,而 ...
- 利用Python学习线性代数 -- 1.1 线性方程组
利用Python学习线性代数 -- 1.1 线性方程组 本节实现的主要功能函数,在源码文件linear_system中,后续章节将作为基本功能调用. 线性方程 线性方程组由一个或多个线性方程组成,如 ...
- Python与线性代数基本概念
在Python中使用Numpy创建向量: x = np.array([1, 2, 3, 4]) 创建3 x 3矩阵 B = np.array([[1, 2],[3, 4],[5, 6]]) Shape ...
- Python之Numpy:线性代数/矩阵运算
当你知道工具的用处,理论与工具如何结合的时候,通常会加速咱们对两者的学习效率. 零 numpy 那么,Numpy是什么? NumPy(Numerical Python) 是 Python 语言的一个扩 ...
- Python 矩阵(线性代数)
Python 矩阵(线性代数) 这里有一份新手友好的线性代数笔记,是和深度学习花书配套,还被Ian Goodfellow老师翻了牌. 笔记来自巴黎高等师范学院的博士生Hadrien Jean,是针对& ...
- PYTHON替代MATLAB在线性代数学习中的应用(使用Python辅助MIT 18.06 Linear Algebra学习)
前言 MATLAB一向是理工科学生的必备神器,但随着中美贸易冲突的一再升级,禁售与禁用的阴云也持续笼罩在高等学院的头顶.也许我们都应当考虑更多的途径,来辅助我们的学习和研究工作. 虽然PYTHON和众 ...
随机推荐
- Python3 isinstance() 函数
Python3 isinstance() 函数 描述 isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type(). isinstance() 与 type() 区别: typ ...
- Caching漫谈--关于Cache的几个理论
如今缓存是随处可见了,如果你的程序还没有使用到缓存,那可能是你的程序并发量很低,或对实时性要求很低.我们公司的ERP在显示某些报表时,每次打开都需要花上几分钟的时间,假如搜索引擎也是这么慢,我想这家搜 ...
- SharePoint 2010:搜索服务当前处于脱机状态
错误 搜索服务当前处于脱机状态.请访问 SharePoint 管理中心中的"服务器上的服务"页,以验证是否启用了该服务.这也可能是由于正在移动索引器所致. 正在配置网站集搜索关 ...
- springmvc和mybatis整合关键配置
springmvc+mybaits的系统架构: 第一步:整合dao层 mybatis和spring整合,通过spring管理mapper接口. 使用mapper的扫描器自动扫描mapper接口在spr ...
- mybatis学习笔记--常见的错误
原文来自:<mybatis学习笔记--常见的错误> 昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新. 1.没有在configurat ...
- jsonp原理和实例详解
1.一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面.动态网页.web服务.WCF,只要是跨域请求,一律不准:2.不过我们又发现,Web页面上调用js文件时则不受 ...
- JavaStrip和python的变量存储位置
<script> var a =1 function a() { console.log("sdfdsf") } a() </script> Uncaugh ...
- python接口自动化测试八:更新Cookies、session保持会话
s = requests.session() # 此方法只适用于网站是cookies这种,网站是token的没用 # 这样做的好处就是可以保存cookies并保持会话,不用每次都去获取.传参 Toke ...
- Android Monkey压力测试环境搭建及使用
Android Monkey压力测试学习笔记 步骤:下载SDK -> 解压进入SDK Manager下载系统 -> 配置环境变量 -> 创建虚拟设备或连接真机 -> 进入命令模 ...
- WCF简介-01
WCF Windows Communication Foundation 1.1 新建一个"空白解决方案" 1.2 在解决方案中添加类库IBLL 1.2.1 添加接口IUserIn ...