Python矩阵常见运算操作实例总结


Posted in Python onSeptember 29, 2017

本文实例讲述了Python矩阵常见运算操作。分享给大家供大家参考,具体如下:

python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包。

一.numpy的导入和使用

from numpy import *;#导入numpy的库函数
import numpy as np; #这个方式使用numpy的函数时,需要以np.开头。

二.矩阵的创建

由一维或二维数据创建矩阵

from numpy import *;
a1=array([1,2,3]);
a1=mat(a1);

创建常见的矩阵

data1=mat(zeros((3,3)));
#创建一个3*3的零矩阵,矩阵这里zeros函数的参数是一个tuple类型(3,3)
data2=mat(ones((2,4)));
#创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int类型,可以使用dtype=int
data3=mat(random.rand(2,2));
#这里的random模块使用的是numpy中的random模块,random.rand(2,2)创建的是一个二维数组,需要将其转换成#matrix
data4=mat(random.randint(10,size=(3,3)));
#生成一个3*3的0-10之间的随机整数矩阵,如果需要指定下界则可以多加一个参数
data5=mat(random.randint(2,8,size=(2,5));
#产生一个2-8之间的随机整数矩阵
data6=mat(eye(2,2,dtype=int));
#产生一个2*2的对角矩阵
a1=[1,2,3];
a2=mat(diag(a1));
#生成一个对角线为1、2、3的对角矩阵

三.常见的矩阵运算

1. 矩阵相乘

a1=mat([1,2]);
a2=mat([[1],[2]]);
a3=a1*a2;
#1*2的矩阵乘以2*1的矩阵,得到1*1的矩阵

2. 矩阵点乘

矩阵对应元素相乘

a1=mat([1,1]);
a2=mat([2,2]);
a3=multiply(a1,a2);

矩阵点乘

a1=mat([2,2]);
a2=a1*2;

3.矩阵求逆,转置

矩阵求逆

a1=mat(eye(2,2)*0.5);
a2=a1.I;
#求矩阵matrix([[0.5,0],[0,0.5]])的逆矩阵

矩阵转置

a1=mat([[1,1],[0,0]]);
a2=a1.T;

4.计算矩阵对应行列的最大、最小值、和。

a1=mat([[1,1],[2,3],[4,2]]);

计算每一列、行的和

a2=a1.sum(axis=0);//列和,这里得到的是1*2的矩阵
a3=a1.sum(axis=1);//行和,这里得到的是3*1的矩阵
a4=sum(a1[1,:]);//计算第一行所有列的和,这里得到的是一个数值

计算最大、最小值和索引

a1.max();//计算a1矩阵中所有元素的最大值,这里得到的结果是一个数值
a2=max(a1[:,1]);//计算第二列的最大值,这里得到的是一个1*1的矩阵
a1[1,:].max();//计算第二行的最大值,这里得到的是一个一个数值
np.max(a1,0);//计算所有列的最大值,这里使用的是numpy中的max函数
np.max(a1,1);//计算所有行的最大值,这里得到是一个矩阵
np.argmax(a1,0);//计算所有列的最大值对应在该列中的索引
np.argmax(a1[1,:]);//计算第二行中最大值对应在改行的索引

5.矩阵的分隔和合并

矩阵的分隔,同列表和数组的分隔一致。

a=mat(ones((3,3)));
b=a[1:,1:];//分割出第二行以后的行和第二列以后的列的所有元素

矩阵的合并

a=mat(ones((2,2)));
b=mat(eye(2));
c=vstack((a,b));//按列合并,即增加行数
d=hstack((a,b));//按行合并,即行数不变,扩展列数

四.矩阵、列表、数组的转换

列表可以修改,并且列表中元素可以使不同类型的数据,如下:

l1=[[1],'hello',3];

numpy中数组,同一个数组中所有元素必须为同一个类型,有几个常见的属性:

a=array([[2],[1]]);
dimension=a.ndim;
m,n=a.shape;
number=a.size;//元素总个数
str=a.dtype;//元素的类型

numpy中的矩阵也有与数组常见的几个属性。

它们之间的转换:

a1=[[1,2],[3,2],[5,2]];//列表
a2=array(a1);//将列表转换成二维数组
a3=array(a1);//将列表转化成矩阵
a4=array(a3);//将矩阵转换成数组
a5=a3.tolist();//将矩阵转换成列表
a6=a2.tolist();//将数组转换成列表

这里可以发现三者之间的转换是非常简单的,这里需要注意的是,当列表是一维的时候,将它转换成数组和矩阵后,再通过tolist()转换成列表是不相同的,需要做一些小小的修改。如下:

a1=[1,2,3];
a2=array(a1);
a3=mat(a1);
a4=a2.tolist();//这里得到的是[1,2,3]
a5=a3.tolist();//这里得到的是[[1,2,3]]
a6=(a4 == a5);//a6=False
a7=(a4 is a5[0]);//a7=True,a5[0]=[1,2,3]

矩阵转换成数值,存在以下一种情况:

dataMat=mat([1]);
val=dataMat[0,0];//这个时候获取的就是矩阵的元素的数值,而不再是矩阵的类型

更多关于Python相关内容可查看本站专题:《Python数学运算技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现在无须过多援引的情况下创建字典的方法
Sep 25 Python
Python cx_freeze打包工具处理问题思路及解决办法
Feb 13 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
Pycharm学习教程(7)虚拟机VM的配置教程
May 04 Python
python实现Adapter模式实例代码
Feb 09 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
Python利用pandas处理Excel数据的应用详解
Jun 18 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
如何在pycharm中快捷安装pip命令(如pygame)
May 31 Python
利用python求解物理学中的双弹簧质能系统详解
Sep 29 #Python
python中装饰器级连的使用方法示例
Sep 29 #Python
python中map()函数的使用方法示例
Sep 29 #Python
python中reduce()函数的使用方法示例
Sep 29 #Python
Django Admin 实现外键过滤的方法
Sep 29 #Python
python 调用c语言函数的方法
Sep 29 #Python
python文件名和文件路径操作实例
Sep 29 #Python
You might like
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
PHP中串行化用法示例
2016/11/16 PHP
javascript jQuery插件练习
2008/12/24 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python常见数据结构详解
2014/07/24 Python
Python中str.join()简单用法示例
2018/03/20 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
高级Java程序员面试题
2016/06/23 面试题
成人大专自我鉴定范文
2013/10/19 职场文书
影视动画专业个人的自我评价
2013/12/31 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
责任书范本
2014/08/25 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
三孔导游词
2015/02/05 职场文书
关于python类SortedList详解
2021/09/04 Python