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中使用platform模块获取系统信息的用法教程
Jul 08 Python
深入理解Python3中的http.client模块
Mar 29 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
python format 格式化输出方法
Jul 16 Python
Python3匿名函数用法示例
Jul 25 Python
Django框架模板的使用方法示例
May 25 Python
python输入错误后删除的方法
Oct 12 Python
python区分不同数据类型的方法
Oct 14 Python
python ftplib模块使用代码实例
Dec 31 Python
Python终端输出彩色字符方法详解
Feb 11 Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 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编程中八种常见的文件操作方式
2006/11/19 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
dojo随手记 gird组件引用
2011/02/24 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
简单实现js上传文件功能
2017/08/21 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
javascript 高级语法之继承的基本使用方法示例
2019/11/11 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
简单解析Django框架中的表单验证
2015/07/17 Python
值得收藏的10道python 面试题
2019/04/15 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
Python自带的IDE在哪里
2020/07/01 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
Python与C/C++的相互调用案例
2021/03/04 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
酒店值班经理的工作职责范本
2014/02/18 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server