Python中Numpy mat的使用详解


Posted in Python onMay 24, 2019

前面介绍过用dnarray来模拟,但mat更符合矩阵,这里的mat与Matlab中的很相似。(mat与matrix等同)

基本操作

>>> m= np.mat([1,2,3]) #创建矩阵
>>> m
matrix([[1, 2, 3]])

>>> m[0]        #取一行
matrix([[1, 2, 3]])
>>> m[0,1]       #第一行,第2个数据
2
>>> m[0][1]       #注意不能像数组那样取值了
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/lib64/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 305, in __getitem__
  out = N.ndarray.__getitem__(self, index)
IndexError: index 1 is out of bounds for axis 0 with size 1

#将Python的列表转换成NumPy的矩阵
>>> list=[1,2,3]
>>> mat(list)
matrix([[1, 2, 3]])

#Numpy dnarray转换成Numpy矩阵
>>> n = np.array([1,2,3])
>>> n
array([1, 2, 3])
>>> np.mat(n)
matrix([[1, 2, 3]])

#排序
>>> m=np.mat([[2,5,1],[4,6,2]])  #创建2行3列矩阵
>>> m
matrix([[2, 5, 1],
    [4, 6, 2]])
>>> m.sort()          #对每一行进行排序
>>> m
matrix([[1, 2, 5],
    [2, 4, 6]])

>>> m.shape           #获得矩阵的行列数
(2, 3)
>>> m.shape[0]         #获得矩阵的行数
2
>>> m.shape[1]         #获得矩阵的列数
3

#索引取值
>>> m[1,:]           #取得第一行的所有元素
matrix([[2, 4, 6]])
>>> m[1,0:1]          #第一行第0个元素,注意左闭右开
matrix([[2]])
>>> m[1,0:3]
matrix([[2, 4, 6]])
>>> m[1,0:2]
matrix([[2, 4]])

矩阵求逆、行列式

与Numpy array相同,可参考链接。

矩阵乘法

矩阵乘,与Numpy dnarray类似,可以使用np.dot()和np.matmul(),除此之外,由于matrix中重载了“*”,因此“*”也能用于矩阵乘。

>>> a = np.mat([[1,2,3], [2,3,4]])
>>> b = np.mat([[1,2], [3,4], [5,6]])
>>> a
matrix([[1, 2, 3],
    [2, 3, 4]])
>>> b
matrix([[1, 2],
    [3, 4],
    [5, 6]])
>>> a * b     #方法一
matrix([[22, 28],
    [31, 40]])
>>> np.matmul(a, b)  #方法二
matrix([[22, 28],
    [31, 40]])
>>> np.dot(a, b)   #方法三
matrix([[22, 28],
    [31, 40]])

点乘,只剩下multiply方法了。

>>> a = np.mat([[1,2], [3,4]])
>>> b = np.mat([[2,2], [3,3]])
>>> np.multiply(a, b)
matrix([[ 2, 4],
    [ 9, 12]])

矩阵转置

转置有两种方法:

>>> a
matrix([[1, 2],
    [3, 4]])
>>> a.T      #方法一,ndarray也行
matrix([[1, 3],
    [2, 4]])
>>> np.transpose(a)  #方法二
matrix([[1, 3],
    [2, 4]])

值得一提的是,matrix中求逆还有一种简便方法(ndarray中不行):

>>> a
matrix([[1, 2],
    [3, 4]])
>>> a.I
matrix([[-2. , 1. ],
    [ 1.5, -0.5]])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现比较两段文本不同之处的方法
May 30 Python
利用Python获取赶集网招聘信息前篇
Apr 18 Python
深入理解python中的闭包和装饰器
Jun 12 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
python pandas生成时间列表
Jun 29 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
python实现文字版扫雷
Apr 24 Python
使用Python实现批量ping操作方法
May 06 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
Python中Numpy ndarray的使用详解
May 24 #Python
numpy数组之存取文件的实现示例
May 24 #Python
Python实现使用request模块下载图片demo示例
May 24 #Python
Python实现操纵控制windows注册表的方法分析
May 24 #Python
Django框架会话技术实例分析【Cookie与Session】
May 24 #Python
Django框架中间件(Middleware)用法实例分析
May 24 #Python
python与字符编码问题
May 24 #Python
You might like
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
webpack打包js的方法
2018/03/12 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
python解析文件示例
2014/01/23 Python
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
Python入门篇之函数
2014/10/20 Python
Python编程之多态用法实例详解
2015/05/19 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
Python如何在bool函数中取值
2020/09/21 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
某个公司的Java笔面试题
2016/03/11 面试题
《称象》教学反思
2014/04/25 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
督导岗位职责
2015/02/04 职场文书
运动会广播稿200字
2015/08/19 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL