NumPy与Matlab
2019-02-24 10:26:23
•
阅读
打赏
MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB®和 NumPy/SciPy 有很多共同之处。但是也有很多不同之处。创建NumPy和SciPy是为了用Python最自然的方式进行数值和科学计算。
MATLAB 和 NumPy/SciPy 的差异
MATLAB | NumPy |
---|---|
在MATLAB®中,基本数据类型是双精度浮点数的多维数组。大多数表达式采用这样的数组并且也返回这样的数据类型,操作这些数组的2-D实例的的方式被设计成或多或少地像线性代数中的矩阵运算一样。 | 在NumPy中,基本类型是多维数组 。在所有维度(包括2D)上对这些数组的操作都是元素级的操作。但是,有一种特殊的矩阵 类型用于做线性代数,它只是array 类的一个子类。矩阵类数组的运算是线性代数运算. |
MATLAB®是使用基于1(1)的索引。 使用(1)下标作为元素的初始位置。 | Python使用基于0(零)的索引。序列的初始元素使用[0]来查找。 |
MATLAB的脚本语言是为做线性代数而创建的。基本矩阵操作的语法很好也很干净,但是用于添加GUI和制作成熟应用程序的API或多或少是事后才想到的。 | NumPy基于Python,它从一开始就被设计为一种优秀的通用编程语言。 虽然Matlab的一些数组操作的语法比NumPy更紧凑,但NumPy(由于是Python的附加组件)可以做许多Matlab所不能做的事情,例如将主数组类型子类化为干净地进行数组和矩阵数学运算。 |
在 MATLAB® 中,数组具有按值传递的语义,并有一个懒散的写拷贝方案,以防止在真正需要副本之前实际创建副本。使用切片操作复制数组的部分。 | 在NumPy数组,数组只是内存中的引用而已。 切片只是操作数组的视图层面而已。 |
NumPy array 类和 Matrix 类
NumPy包含 array
类和 Matrix
类。 array
类旨在成为用于多种数值计算的通用n维数组,而 matrix
类则专门用于促进线性代数计算。实际上,两者之间只有少数几个关键区别。
- 操作符
*
,dot()
, 和multiply()
:- 对于数组,
*
表示逐元素乘法,而dot()
函数用于矩阵乘法。 - 对于矩阵,
*
表示矩阵乘法,multiply()
函数用于逐元素乘法。
- 对于数组,
- 矢量处理(一维数组)
- 对于数组,向量形状1xN,Nx1和N都是不同的东西。像A [:,1]这样的操作返回形状N的一维数组,而不是形状Nx1的二维数组。
一维数组上的转置不起任何作用。 - 对于矩阵,一维数组总是向上转换为1xN或Nx1矩阵(行或列向量)。A [:,1] 返回形状为Nx1的二维矩阵。
- 对于数组,向量形状1xN,Nx1和N都是不同的东西。像A [:,1]这样的操作返回形状N的一维数组,而不是形状Nx1的二维数组。
- 处理更高维数组(ndim> 2)
- 数组对象的维数可以> 2;
- 矩阵对象总是具有两个维度。
- 便捷的属性
array
有一个.T属性,它返回数据的转置。矩阵
还具有.H,.I和.A属性,分别返回矩阵的共轭转置,反转和asarray()
。
- 便捷的构造器
数组
构造函数接受(嵌套的)Pythonseqxues作为初始化器。如array([1,2,3], [4,5,6])
。矩阵
构造器另外采用方便的字符串初始化器(传入的参数是字符串)。如matrix("[1 2 3; 4 5 6]")
。
相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型