python的常见矩阵运算(小结)


Posted in Python onAugust 07, 2019

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

1.numpy的导入和使用

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

2.矩阵的创建

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

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的对角矩阵

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));//按行合并,即行数不变,扩展列数

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

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

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和shell变量互相传递的几种方法
Nov 20 Python
python中__slots__用法实例
Jun 04 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
Dec 09 Python
举例讲解Python常用模块
Mar 08 Python
python程序变成软件的实操方法
Jun 24 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
python多线程高级锁condition简单用法示例
Nov 07 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 23 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 Python
pycharm debug 断点调试心得分享
Apr 16 Python
python字典的setdefault的巧妙用法
Aug 07 #Python
解决Django中调用keras的模型出现的问题
Aug 07 #Python
python 字典 setdefault()和get()方法比较详解
Aug 07 #Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 #Python
如何用Python来搭建一个简单的推荐系统
Aug 07 #Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 #Python
django 实现将本地图片存入数据库,并能显示在web上的示例
Aug 07 #Python
You might like
PHP+DBM的同学录程序(2)
2006/10/09 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
Zend的MVC机制使用分析(一)
2013/05/02 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
javascript 写类方式之二
2009/07/05 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
JS函数基本定义与用法示例
2020/01/15 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
python3中rank函数的用法
2019/11/27 Python
基于matplotlib xticks用法详解
2020/04/16 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
学前班教师的自我鉴定
2013/12/05 职场文书
市场安全管理制度
2014/01/26 职场文书
小学音乐教学反思
2014/02/05 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
Elasticsearch 基本查询和组合查询
2022/04/19 Python