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 相关文章推荐
Django中Forms的使用代码解析
Feb 10 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
windows 10 设定计划任务自动执行 python 脚本的方法
Sep 11 Python
使用Rasterio读取栅格数据的实例讲解
Nov 26 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
python 爬虫网页登陆的简单实现
Nov 30 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 变量类型的强制转换
2009/10/23 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
Python中线程编程之threading模块的使用详解
2015/06/23 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
Django开发中复选框用法示例
2018/03/20 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
python try 异常处理(史上最全)
2019/03/07 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
python中while和for的区别总结
2019/06/28 Python
python文件操作的简单方法总结
2019/11/07 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
Python创建临时文件和文件夹
2020/08/05 Python
python脚本定时发送邮件
2020/12/22 Python
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
物流管理专业大学生自荐信
2013/10/04 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
促销活动方案模板
2014/02/24 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
600字作文之感受大自然
2019/11/27 职场文书
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL
Hive常用日期格式转换语法
2022/06/25 数据库