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 selenium文件上传方法汇总
Nov 19 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
python实现倒计时小工具
Jul 29 Python
Python简易版图书管理系统
Aug 12 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
python使用正则来处理各种匹配问题
Dec 22 Python
解决python gdal投影坐标系转换的问题
Jan 17 Python
python中文分词库jieba使用方法详解
Feb 11 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
python opencv实现简易画图板
Aug 27 Python
python实现二分查找算法
Sep 18 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 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批量删除数据
2007/01/18 PHP
PHP仿盗链代码
2012/06/03 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
php读取csc文件并输出
2015/05/21 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
node文字生成图片的示例代码
2017/10/26 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
Python3.7实现中控考勤机自动连接
2018/08/28 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
Python列表切片操作实例总结
2019/02/19 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
化学教学随笔感言
2014/02/19 职场文书
培训专员岗位职责
2014/02/26 职场文书
授权委托书(完整版)
2014/09/10 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技