python矩阵运算 不断收集整理

python矩阵运算

转自:http://blog.sina.com.cn/s/blog_5f234d4701012p64.html

Python使用NumPy包完成了对N-维数组的快速便捷操作。使用这个包,需要导入numpy。SciPy包以NumPy包为基础,大大的扩展了numpy的能力。为了使用的方便,scipy包在最外层名字空间中包括了所有的numpy内容,因此只要导入了scipy,不必在单独导入numpy了!但是为了明确哪些是numpy中实现的,哪些是scipy中实现的,本文还是进行了区分。以下默认已经:import
numpy as np 以及 import scipy as sp

下面简要介绍Python和MATLAB处理数学问题的几个不同点。

1.MATLAB的基本是矩阵,而numpy的基本类型是多为数组,把matrix看做是array的子类。

2.MATLAB的索引从1开始,而numpy从0开始。

1.建立矩阵

a1=np.array([1,2,3],dtype=int)  
#建立一个一维数组,数据类型是int。也可以不指定数据类型,使用默认。几乎所有的数组建立函数都可以指定数据类型,即dtype的取值。

a2=np.array([[1,2,3],[2,3,4]])  
#建立一个二维数组。此处和MATLAB的二维数组(矩阵)的建立有很大差别。

同样,numpy中也有很多内置的特殊矩阵:

b1=np.zeros((2,3))  
 #生成一个2行3列的全0矩阵。注意,参数是一个tuple:(2,3),所以有两个括号。完整的形式为:zeros(shape,dtype=)。相同的结构,有ones()建立全1矩阵。empty()建立一个空矩阵,使用内存中的随机值来填充这个矩阵。

b2=identity(n)   #建立n*n的单位阵,这只能是一个方阵。

b3=eye(N,M=None,k=0)  
 #建立一个对角线是1其余值为0的矩阵,用k指定对角线的位置。M默认None。

此外,numpy中还提供了几个like函数,即按照某一个已知的数组的规模(几行几列)建立同样规模的特殊数组。这样的函数有zeros_like()、empty_like()、ones_like(),它们的参数均为如此形式:zeros_like(a,dtype=),其中,a是一个已知的数组。

c1=np.arange(2,3,0.1)  
#起点,终点,步长值。含起点值,不含终点值。

c2=np.linspace(1,4,10)  
 #起点,终点,区间内点数。起点终点均包括在内。同理,有logspace()函数

d1=np.linalg.companion(a)  
 #伴随矩阵

d2=np.linalg.triu()/tril()  
#作用同MATLAB中的同名函数

e1=np.random.rand(3,2)  
 #产生一个3行2列的随机数组。同一空间下,有randn()/randint()等多个随机函数

fliplr()/flipud()/rot90()  
 #功能类似MATLAB同名函数。

xx=np.roll(x,2)  
#roll()是循环移位函数。此调用表示向右循环移动2位。

2.数组的特征信息

先假设已经存在一个N维数组X了,那么可以得到X的一些属性,这些属性可以在输入X和一个.之后,按tab键查看提示。这里明显看到了Python面向对象的特征。

X.flags    #数组的存储情况信息。

X.shape  
 #结果是一个tuple,返回本数组的行数、列数、……

X.ndim   #数组的维数,结果是一个数

X.size    #数组中元素的数量

X.itemsize  
 #数组中的数据项的所占内存空间大小

X.dtype    #数据类型

X.T   #如果X是矩阵,发挥的是X的转置矩阵

X.trace()    #计算X的迹

np.linalg.det(a)   #返回的是矩阵a的行列式

np.linalg.norm(a,ord=None)  
 #计算矩阵a的范数

np.linalg.eig(a)  
 #矩阵a的特征值和特征向量

np.linalg.cond(a,p=None)  
 #矩阵a的条件数

np.linalg.inv(a)  
 #矩阵a的逆矩阵

3.矩阵分解

常见的矩阵分解函数,numpy.linalg均已经提供。比如cholesky()/qr()/svd()/lu()/schur()等。某些算法为了方便计算或者针对不同的特殊情况,还给出了多种调用形式,以便得到最佳结果。

4.矩阵运算

np.dot(a,b)用来计算数组的点积;vdot(a,b)专门计算矢量的点积,和dot()的区别在于对complex数据类型的处理不一样;innner(a,b)用来计算内积;outer(a,b)计算外积。

专门处理矩阵的数学函数在numpy的子包linalg中定义。比如np.linalg.logm(A)计算矩阵A的对数。可见,这个处理和MATLAB是类似的,使用一个m后缀表示是矩阵的运算。在这个空间内可以使用的有cosm()/sinm()/signm()/sqrtm()等。其中常规exp()对应有三种矩阵形式:expm()使用Pade近似算法、expm2()使用特征值分析算法、expm3()使用泰勒级数算法。在numpy中,也有一个计算矩阵的函数:funm(A,func)。

5.索引

numpy中的数组索引形式和Python是一致的。如:

x=np.arange(10)

print x[2]  
 #单个元素,从前往后正向索引。注意下标是从0开始的。

print x[-2]  
 #从后往前索引。最后一个元素的下标是-1

print x[2:5]  
 #多个元素,左闭右开,默认步长值是1

print x[:-7]  
 #多个元素,从后向前,制定了结束的位置,使用默认步长值

print x[1:7:2]   #指定步长值

x.shape=(2,5)  
 #x的shape属性被重新赋值,要求就是元素个数不变。2*5=10

print x[1,3]  
 #二维数组索引单个元素,第2行第4列的那个元素

print x[0]   #第一行所有的元素

y=np.arange(35).reshape(5,7)  
 #reshape()函数用于改变数组的维度

print y[1:5:2,::2]  
 #选择二维数组中的某些符合条件的元素

时间: 2024-10-11 21:20:43

python矩阵运算 不断收集整理的相关文章

爬虫技术收集整理

[爬虫技术收集整理] [通用知识] - 正则表达式中各种字符的含义 - Web Crawler Slide share - Quick & Dirty Python [Java语言] - [知了开发]"知了"优化 - WebMagic 调优 - ContentExtractor开源网页正文抽取工具 - 垂直型爬虫架构设计 - 分布式网络爬虫的基本实现简述 - 分布式多爬虫系统--架构设计 - httpclient 多线程高并发Get请求 - Java爬虫框架WebMagic的使

如何用 Python 和 API 收集与分析网络数据?

摘自 https://www.jianshu.com/p/d52020f0c247 本文以一款阿里云市场历史天气查询产品为例,为你逐步介绍如何用 Python 调用 API 收集.分析与可视化数据.希望你举一反三,轻松应对今后的 API 数据收集与分析任务. 市场 我们尝试的,是他们找到的阿里云市场的一款 API 产品,提供天气数据. 它来自于易源数据,链接在 https://market.aliyun.com/products/57096001/cmapi010812.html?spm=517

《移动医疗:医疗实践的变革和机遇》2013年的旧书,以资料收集整理为主,缺乏分析与洞察。2星

英文版2013年出版,写的是美国的移动医疗产业.这个产业在过去的3年中发生了巨变,这本书中大部分的信息已经过时. 另外,全书以公开可见的资料的收集整理为主,缺乏对行业的分析与洞察.我的评价是2星. 以下是书中一些还算有用的信息的摘抄: 1:在加拿大,胸科专家可以对几百英里之外的患者进行病情评估,判断患者是否有呼吸暂停或气胸.而他们用来判断患者病情的超声设备是由那些几乎完全不懂该技术的人员来操作.医生可以利用苹果手机上的Skype软件将超声影像传送过来.整个检测过程由医生远程控制.P6 2:在20

一些Python常用库的整理收藏

一些Python常用库的整理收藏 转载自:https://zhuanlan.zhihu.com/p/21563130 另外 https://awesome-python.com/#data-analysis 网站上也分类好了很多常用的库. GUI 图形界面 Tkinter : Tkinter wxPython: wxPython PyGTK: PyGTK PyQt: PyQt PySide: PySide Web框架 django: django web2py:web2py flask: fla

架构师速成6.6-知识的收集整理学习

知识如何学习前面已经讲了2节,这节主要讲知识的整理和沉淀. 其实我之前也一直没有好好的思考过这个问题,今天在整理自己的wiz知识库的时候突发灵感,所以有了这一节. 其实知识获取的过程分为搜索->收集->整理->精化->应用->分享,前一部分跟时间管理的收集也很相近吧.知识获取的思路适用于有目的的知识收集和日常的备忘性的知识收集.当然你随机收集一些资料记录下来其实效果并不是很理想,重要的是你要有目的的学习才能最大的发挥你的心智以及潜意识.当你主动要学习一项知识时,你的潜意识会主

收集整理的非常有用的PHP函数

项目中经常会需要一些让人头疼的函数,作为开发者应该整理一个自己的函数库,在需要之时复制过来即可.本文作者收集整理数十个PHP项目中常用的函数,保证能正常运行,你只要复制粘贴到你项目中即可. 1.PHP加密解密 PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密. 1 function encryptDecrypt($key, $string, $decrypt){ 2 if($decrypt){ 3 $decrypt

天气API接口大全(nohacks.cn 收集整理)

自序: 由nohacks.cn 收集整理,来源于网络,版权归原作者所有,基本收集了网络上能使用的大部分天气API接口,作者水平精力有限,难免有遗漏或错误的地方,欢迎反馈,作者网站:http://nohacks.cn 更新记录: 2015.3.2    更新云聚,增加天气网接口. 2015.2.28  增加百度天气图片,感谢网友彬子的反馈. 2015. 2.19 增加百度天气接口,更新中国天气网API. 目录: 1.  中国天气网 1.1  实时天气 API 接口(失效) 1.2  当天天气 AP

工作流,WEB框架,UI组件网络收集整理

工作流,WEB框架,UI组件网络收集整理 在博客园上逛了好多年,随手收录了一些工作流,WEB开发框架,UI组件,现在整理一下与大家分享. 由于个人能力与精力有限,望各位园友在评论中补充,我将全部整理到正文: ? 工作流篇 RoadFlow工作流(收费):                  http://www.cqroad.cn/WorkFlow 驰骋工作流引擎 ccflow                       https://www.oschina.net/p/ccflow YbSof

C++资料收集&整理

友元类: C++中的友元函数和友元类 友元函数.友元类.访问私有数据成员.友元关系[C++] ZLib: c++ zlib(qt)压缩与解压缩 基础: [转载]C/C++中单井号与双井号的使用: http://happyboy200032.blog.163.com/blog/static/469031132012421331566/ malloc.free用法 把<编程珠玑>读薄 C++资料收集&整理