Numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND).

Matrix是Array的一个小的分支,包含于Array。所以matrix 拥有array的所有特性。

在numpy中matrix的主要优势是:相对简单的乘法运算符号。

例如,a和b是两个matrices,那么a*b,就是矩阵积。而不用np.dot()。如:

import numpy as npa=np.mat('4 3; 2 1')
b=np.mat('1 2; 3 4')
print(a)
# [[4 3]
#  [2 1]]
print(b)
# [[1 2]
#  [3 4]]
print(a*b)
# [[13 20]
#  [ 5  8]]

matrix 和 array 都可以通过objects后面加.T 得到其转置。但是 matrix objects 还可以在后面加 .H f得到共轭矩阵, 加 .I 得到逆矩阵。

相反的是在numpy里面arrays遵从逐个元素的运算,所以对于array:c 和d的c*d运算相当于matlab里面的c.*d运算。

c=np.array([[4, 3], [2, 1]])
d=np.array([[1, 2], [3, 4]])
print(c*d)
# [[4 6]
#  [6 4]]

而矩阵相乘,则需要numpy里面的dot命令 :

print(np.dot(c,d))
# [[13 20]
#  [ 5  8]]

但是python中矩阵没有MATLAB中的.*这个性质,对于matrix对应乘法得用np.multiply()

>>> np.multiply(a,b)
matrix([[ 4,  6],[6,  4]])

当然 ** 运算符的作用也不一样 :

print(a**2)  #矩阵乘法
# [[22 15]
#  [10  7]]
print(c**2)  #对应乘法
# [[16  9]
#  [ 4  1]]

问题就出来了,如果一个程序里面既有matrix 又有array,会让人脑袋大。但是如果只用array,你不仅可以实现matrix所有的功能,还减少了编程和阅读的麻烦。

当然你可以通过下面的两条命令轻松的实现两者之间的转换:np.asmatrixnp.asarray

对我来说,numpy 中的array与numpy中的matrix,matlab中的matrix的最大的不同是,在做归约运算时,array的维数会发生变化,但matrix总是保持为2维。例如下面求平均值的运算

>>> m = np.mat([[1,2],[2,3]])
>>> m
matrix([[1, 2],[2, 3]])
>>> mm = m.mean(1)
>>> mm
matrix([[ 1.5],[ 2.5]])
>>> mm.shape
(2, 1)
>>> m - mm
matrix([[-0.5,  0.5],[-0.5,  0.5]])

对array 来说

>>> a = np.array([[1,2],[2,3]])
>>> a
array([[1, 2],[2, 3]])
>>> am = a.mean(1)
>>> am.shape
(2,)
>>> am
array([ 1.5,  2.5])
>>> a - am #wrong
array([[-0.5, -0.5],[ 0.5,  0.5]])
>>> a - am[:, np.newaxis]  #right
array([[-0.5,  0.5],[-0.5,  0.5]])

python_numpy_中的matrix与array的区别相关推荐

  1. python中matrix是什么意思_Python与线性代数——Numpy中的matrix()和array()的区别

    Numpy中matrix必须是2维的,但是 numpy中array可以是多维的(1D,2D,3D····ND).matrix是array的一个小的分支,包含于array.所以matrix 拥有arra ...

  2. numpy中的matrix与array的区别

    Numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array ...

  3. 论numpy中matrix 和 array的区别

    论numpy中matrix 和 array的区别 原文:http://blog.csdn.net/vincentlipan/article/details/20717163 数组转换矩阵:  A = ...

  4. python中的list和array的区别及相互转化

    电脑环境 电脑环境:Windows 10 教育版 Python:python3.6 概述 python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须 ...

  5. numpy中的ndarray与array的区别、不同

    翻译自stackoverflow上的回答 https://stackoverflow.com/questions/15879315/what-is-the-difference-between-nda ...

  6. python中list 和array的区别

    python中 list 与数组的互相转换 (1)list转array:         np.array(a) (2)array 转list           a.tolist()     输出结 ...

  7. Python mat与array的区别

    起源: Python中的numpy包是一个科学计算包,在进行科学计算时多数情况下都会用到这个包,但是其中的array和mat这两个函数的区别还是要注意.数据的类型很有可能是程序出现bug的一个难以发现 ...

  8. ndarray 与 array 的区别 关系,所以ndarray是一个类对象,而array是一个方法

    ndarray 与 array 的区别 关系 置顶 wanglll* 2020-02-06 20:00:37  8455  已收藏 17 分类专栏: 数据分析 文章标签: numpy 版权 ndarr ...

  9. 多维数组和C#中的数组数组有什么区别?

    C#中的多维数组double[,]和数组数组double[][]什么区别? 如果存在差异,那么每个最好的用途是什么? #1楼 前言:此评论旨在解决okutane提供的答案 ,但是由于SO的愚蠢信誉系统 ...

  10. C#中关键字ref与out的区别(转)

    C#中关键字ref与out的区别(转) 在C#中,ref与out是很特殊的两个关键字.使用它们,可以使参数按照引用来传递. 总的来说,通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用 ...

最新文章

  1. linux jemalloc 内存分配器 安装与使用
  2. 前方高能 | 容器化应用操作原来可以这样简单
  3. 【自用】nginx.conf
  4. centos7输入shell找不到命令_反弹shell原理与实现
  5. 高考辽宁理工高考计算机专业分数,辽宁高考985分数线2019-985大学在辽宁省的录取分数线及位次...
  6. 应用程序框架实战二十六:查询对象
  7. 第十天内容《基础交换十》
  8. XML (4) XSL教程
  9. C语言PAT乙级试题答案1016
  10. 华为OJ题目 -- 初级篇(机试OJ平台)
  11. Airtest网易自动化测试工具初探(一)
  12. armv6、armv7、armv7s、arm64分别对应什么?
  13. iis启动服务时提示在本地计算机 无法启动iis admin服务,iis 依存服务和组没法启动...
  14. Oracle VM VirtualBox 使用教程,说实话也就那样吧
  15. Clion配置MinGW
  16. jpg转换成pdf转换器免费版哪个好
  17. 车载终端794认证,905认证
  18. 贷记、借记、来帐、往账的区别
  19. 创业公司股权分配较好方案推荐
  20. 解决“the database principal owns a schema in the database and cannot be dropped“问题

热门文章

  1. Python3-问题整理
  2. Asp.NetCore远程自启动、重启、关闭实现
  3. 查询视图遇见的问题,以及访问另一个数据库的表
  4. 将远程数据库中的某表数据复制到本数据库(ORACLE)
  5. 扫描软件(to be followed)
  6. SpringBoot+JSON+AJAX+ECharts+Fiddler实现前后端分离开发可视化(进阶篇)
  7. 日期时间格式与时间戳互转
  8. 作为开发你必须知道的WebSocket详解
  9. js给列表设置统一的高度
  10. ⭐图例结合超硬核讲解shiro⭐