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类的基础入门知识
Nov 24 Python
Python使用Scrapy爬取妹子图
May 28 Python
Python编程中实现迭代器的一些技巧小结
Jun 21 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
Python部署web开发程序的几种方法
May 05 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
一文总结学习Python的14张思维导图
Oct 17 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
用vue.js组件模拟v-model指令实例方法
Jul 05 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
Aug 28 Python
Django创建一个后台的基本步骤记录
Oct 02 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 中文处理技巧
2010/04/25 PHP
PHP中的array数组类型分析说明
2010/07/27 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
JavaScript 题型问答有答案参考
2010/02/17 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
javascript中undefined与null的区别
2015/08/16 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
详解python eval函数的妙用
2017/11/16 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
关于python多重赋值的小问题
2019/04/17 Python
python提取log文件内容并画出图表
2019/07/08 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
一道输出判断型Java面试题
2014/10/01 面试题
开学寄语大全
2014/04/08 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
消防安全宣传标语
2014/06/07 职场文书
特此通知格式
2015/04/27 职场文书
城南旧事读书笔记
2015/06/29 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书