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之print详解
Sep 28 Python
Python中处理字符串之islower()方法的使用简介
May 19 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
Django model序列化为json的方法示例
Oct 16 Python
浅谈python脚本设置运行参数的方法
Dec 03 Python
Python流程控制 while循环实现解析
Sep 02 Python
Python超越函数积分运算以及绘图实现代码
Nov 20 Python
Python中生成ndarray实例讲解
Feb 22 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
Feb 26 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 Python
Python装饰器详细介绍
Mar 25 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
用php写的serv-u的web申请账号的程序
2006/10/09 PHP
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
php利用cookie实现访问次数统计代码
2011/05/19 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
Django实现分页显示效果
2019/10/31 Python
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
医学专业毕业生推荐信
2013/11/14 职场文书
产品工艺师的岗位职责
2013/11/15 职场文书
求职简历中个人的自我评价
2013/12/25 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
财务负责人任命书
2014/06/06 职场文书
企业标语口号
2014/06/10 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫