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 Django模板的使用方法
Jan 14 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
Python SQL查询并生成json文件操作示例
Aug 17 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
Python Django框架实现应用添加logging日志操作示例
May 17 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
Oct 28 Python
python调用函数、类和文件操作简单实例总结
Nov 29 Python
Python实现不规则图形填充的思路
Feb 02 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
Python把图片转化为pdf代码实例
Jul 28 Python
python绘制箱型图
Apr 27 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数组排序usort、uksort与sort函数用法
2014/11/17 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
用js实现计算加载页面所用的时间
2010/04/02 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
jQuery大于号(&gt;)选择器的作用解释
2015/01/13 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
python使用xmlrpc实例讲解
2013/12/17 Python
Python lxml模块安装教程
2015/06/02 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
Python实现简单的四则运算计算器
2016/11/02 Python
Python线性回归实战分析
2018/02/01 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
python实现高斯投影正反算方式
2020/01/17 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
动员大会主持词
2014/03/20 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
总经理检讨书
2014/09/15 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
公司与个人合作协议书
2016/03/19 职场文书