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实现获取nginx服务器ip及流量统计信息功能示例
May 18 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
django搭建项目配置环境和创建表过程详解
Jul 22 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
使用tensorflow根据输入更改tensor shape
Jun 23 Python
简单的Python人脸识别系统
Jul 14 Python
python反爬虫方法的优缺点分析
Nov 25 Python
python中的列表和元组区别分析
Dec 30 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 Python
python 中[0]*2与0*2的区别说明
May 10 Python
详解如何用Python实现感知器算法
Jun 18 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中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
javascript动态加载三
2012/08/22 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
node通过express搭建自己的服务器
2017/09/30 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
大二学习计划书范文
2014/04/27 职场文书
体育课外活动总结
2014/07/08 职场文书
监护人证明
2015/06/19 职场文书
趣味运动会简讯
2015/07/20 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书