Python计算矩阵的和积的实例详解


Posted in Python onSeptember 10, 2020

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的Django框架中的QuerySets
Apr 20 Python
python在控制台输出进度条的方法
Jun 20 Python
Python 字典与字符串的互转实例
Jan 13 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
如何将你的应用迁移到Python3的三个步骤
Dec 22 Python
python如何对链表操作
Oct 10 Python
django中cookiecutter的使用教程
Dec 03 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
tensorflow2.0教程之Keras快速入门
Feb 20 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 Python
python3中apply函数和lambda函数的使用详解
Feb 28 Python
python如何运行js语句
Sep 09 #Python
python如何爬取动态网站
Sep 09 #Python
python如何停止递归
Sep 09 #Python
python能做哪些生活有趣的事情
Sep 09 #Python
Python 连接 MySQL 的几种方法
Sep 09 #Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 #Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 #Python
You might like
MySQL中create table语句的基本语法是
2007/01/15 PHP
10个实用的PHP代码片段
2011/09/02 PHP
php从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
基于php缓存的详解
2013/05/15 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
一些实用的jQuery代码片段收集
2011/07/12 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
2016/01/12 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
如何测量vue应用运行时的性能
2019/06/21 Javascript
python实现文件路径和url相互转换的方法
2015/07/06 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
政法大学毕业生自荐信范文
2014/01/01 职场文书
在校生自我鉴定
2014/01/23 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
小学远程教育工作总结
2015/08/13 职场文书
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS