python_numpy_中的matrix与array的区别
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.asmatrix
和np.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的区别相关推荐
- python中matrix是什么意思_Python与线性代数——Numpy中的matrix()和array()的区别
Numpy中matrix必须是2维的,但是 numpy中array可以是多维的(1D,2D,3D····ND).matrix是array的一个小的分支,包含于array.所以matrix 拥有arra ...
- numpy中的matrix与array的区别
Numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array ...
- 论numpy中matrix 和 array的区别
论numpy中matrix 和 array的区别 原文:http://blog.csdn.net/vincentlipan/article/details/20717163 数组转换矩阵: A = ...
- python中的list和array的区别及相互转化
电脑环境 电脑环境:Windows 10 教育版 Python:python3.6 概述 python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须 ...
- numpy中的ndarray与array的区别、不同
翻译自stackoverflow上的回答 https://stackoverflow.com/questions/15879315/what-is-the-difference-between-nda ...
- python中list 和array的区别
python中 list 与数组的互相转换 (1)list转array: np.array(a) (2)array 转list a.tolist() 输出结 ...
- Python mat与array的区别
起源: Python中的numpy包是一个科学计算包,在进行科学计算时多数情况下都会用到这个包,但是其中的array和mat这两个函数的区别还是要注意.数据的类型很有可能是程序出现bug的一个难以发现 ...
- ndarray 与 array 的区别 关系,所以ndarray是一个类对象,而array是一个方法
ndarray 与 array 的区别 关系 置顶 wanglll* 2020-02-06 20:00:37 8455 已收藏 17 分类专栏: 数据分析 文章标签: numpy 版权 ndarr ...
- 多维数组和C#中的数组数组有什么区别?
C#中的多维数组double[,]和数组数组double[][]什么区别? 如果存在差异,那么每个最好的用途是什么? #1楼 前言:此评论旨在解决okutane提供的答案 ,但是由于SO的愚蠢信誉系统 ...
- C#中关键字ref与out的区别(转)
C#中关键字ref与out的区别(转) 在C#中,ref与out是很特殊的两个关键字.使用它们,可以使参数按照引用来传递. 总的来说,通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用 ...
最新文章
- linux jemalloc 内存分配器 安装与使用
- 前方高能 | 容器化应用操作原来可以这样简单
- 【自用】nginx.conf
- centos7输入shell找不到命令_反弹shell原理与实现
- 高考辽宁理工高考计算机专业分数,辽宁高考985分数线2019-985大学在辽宁省的录取分数线及位次...
- 应用程序框架实战二十六:查询对象
- 第十天内容《基础交换十》
- XML (4) XSL教程
- C语言PAT乙级试题答案1016
- 华为OJ题目 -- 初级篇(机试OJ平台)
- Airtest网易自动化测试工具初探(一)
- armv6、armv7、armv7s、arm64分别对应什么?
- iis启动服务时提示在本地计算机 无法启动iis admin服务,iis 依存服务和组没法启动...
- Oracle VM VirtualBox 使用教程,说实话也就那样吧
- Clion配置MinGW
- jpg转换成pdf转换器免费版哪个好
- 车载终端794认证,905认证
- 贷记、借记、来帐、往账的区别
- 创业公司股权分配较好方案推荐
- 解决“the database principal owns a schema in the database and cannot be dropped“问题