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实现的简单FTP上传下载文件实例
Jun 30 Python
在django中使用自定义标签实现分页功能
Jul 04 Python
Python书单 不将就
Jul 11 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
python爬取哈尔滨天气信息
Jul 14 Python
python中的json总结
Oct 11 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
python数值基础知识浅析
Nov 19 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
Python import模块的缓存问题解决方案
Jun 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
实用函数3
2007/11/08 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
强制设为首页代码
2006/06/19 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
python中的字典使用分享
2016/07/31 Python
Python 字典与字符串的互转实例
2017/01/13 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
分享vim python缩进等一些配置
2018/07/02 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
Jupyter加载文件的实现方法
2020/04/14 Python
python 下划线的不同用法
2020/10/24 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
一些.net面试题
2014/10/06 面试题
汽车检测与维修个人求职信
2013/09/24 职场文书
微博营销计划书
2014/01/10 职场文书
社区服务活动报告
2015/02/05 职场文书