MATLAB与NumPy的对比

文章源自《<a href=”http://mathesaurus.sourceforge.net/matlab-numpy.html” target=”_blank”>NumPy for MATLAB user</a>》。**

本文目录

[TOC]

1. 算术运算

MATLABPython描述备注
a.^bnp.power(a,b)
a**b
a的b次方
rem(a,b)a % b
np.remainder(a,b)
np.fmod(a,b)
取余,模运算
factorial(a)np.math.factorial(a)
math.factorial(a)
a的阶乘math是未经优化的Python标准库,而np.math是经过优化的,速度相对更快。

2. 关系运算

MATLABPython描述备注
a ~= ba != b判断a和b是否不等

3. 逻辑运算

MATLABPython描述备注
a && ba and b单一元素与运算只适应一个元素
a || ba or b单一元素或运算只适应一个元素
a & b
and(a,b)
np.logical_and(a,b)
a and b
多元素与运算
a | b
or(a,b)
np.logical_or(a,b)
a or b
多元素或运算
xor(a,b)np.logical_xor(a,b)异或运算
~a
not(a)
np.logical_not(a)
not a
!a
非运算<font color=’red’>适用对象待更新</font>
any(a)any(a)存在非零元素就返回truelen(np.nonzero(a)[0])>0
all(a)all(a)所有元素不为零才返回truelen(np.nonzero(a)[0])>0

4. 根运算与对数运算

MATLABPython描述备注
sqrt(a)math.sqrt(a)
np.sqrt(a)
平方根MATLAB中一个数,默认是1*1的矩阵。所以MATLAB中对单元素和多元素处理是通用的。而Python中,数和数组在定义上是进行了区分的。此处自带的math标准库仅适用处理单一元素,NumPy中方法既适用于处理单元素(数),也适用于处理多元素(数组)。
log(a)math.log(a)
np.log(a)
自然对数,底为e同上
log10(a)math.log10(a)
np.log10(a)
底数为10同上
log2(a)math.log(a,2)
np.log(a,2)
底数为2同上
exp(a)math.exp(a)
np.exp(a)
常数e的a次方同上

5. 去尾运算

MATLABPython描述备注
round(a)np.around(a)
round(a)
四舍五入见例1
ceil(a)math.ceil(a)
np.ceil(a)
向上(更大的数)取整,注意不是收尾法,因为要考虑负数MATLAB和Python-math得到的是整数,Python得到的是处理了尾数的小数
floor(a)math.floor(a)
np.floor(a)
向下(更小的数)取整,注意不是去尾法,因为要考虑负数同上
fix(a)np.fix(a)向0取整返回一个array
#例1-Python
>>> a = 9.8
>>> round(a)
10
>>> np.around(a)
10.0
%例1-MATLAB
>> a = 9.8
>> round(a)
ans = 
    10

6. 数学常量

MATLABPython描述备注
pimath.pi
np.pi
pi = 3.141592653589793
exp(1)math.e
math.exp(1)
np.e
np.exp(1)
e=2.718281828459045
e=2.718281828459045
e=2.718281828459045
e=2.7182818284590451

7. 向量

MATLABPython描述备注
a=[2 3 4 5]a=np.array([2,3,4,5])行向量
a’a.T
a.reshape(-1,1)
向量的转置

8. 序列

MATLABPython描述备注
1:10list(range(1,11))
np.arange(1,11)
MATLAB和Python1:[1,2,3,4,5,7,8,9,10]
Python2:array([1,2,3,4,5,6,7,8,9,10])
1:3:10np.arange(1,11,3)1,4,7,10
10:-1:1np.arange(10,0,-1)10,9,8,7,6,5,4,3,2,1
10:-3:1np.arange(10,0,-3)10,7,4,1
linspace(1,10,7)np.linspace(1,10,7)matlab: [1.0, 2.5, 4.0, 5.5, 7.0, 8.5, 10.0]
Python: array([1.0, 2.5, 4.0, 5.5, 7.0, 8.5, 10.0])
参数依次为:起点,终点,点的个数。此函数是将起点到终点之间的距离均匀分段。
a(:)=3a.fill(3)
a[:]=3
将所有元素的值都赋为3

9. 拼接矩阵

MATLABPython描述备注
a=[1,2,3; 4,5,6]a=np.array([[1,2,3],[4,5,6]])
[a,a]np.concatenate((a,a), axis=1)见例2
[a;a]np.concatenate((a,a), axis=0)见例2

<font color=”red” face=”Times” size=”3″>例2-MATLAB</font>

>> a=[1,2,3; 4,5,6]

a =
     1     2     3
     4     5     6
>> [a, a]

ans =

     1     2     3     1     2     3
     4     5     6     4     5     6

>> [a;a]

ans =

     1     2     3
     4     5     6
     1     2     3
     4     5     6

<font color=”red” face=”Times” size=”3″>例2-Python</font>

>>> a=np.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
       [4, 5, 6]])
>>> np.concatenate((a,a))
array([[1, 2, 3],
       [4, 5, 6],
       [1, 2, 3],
       [4, 5, 6]])
>>> np.concatenate((a,a), axis=0)
array([[1, 2, 3],
       [4, 5, 6],
       [1, 2, 3],
       [4, 5, 6]])
>>> np.concatenate((a,a), axis=1)
array([[1, 2, 3, 1, 2, 3],
       [4, 5, 6, 4, 5, 6]])


该文章于2017年5月25日于CSDN上首次发表,2017年12月22日搬家至此!

    原文作者:高正杰
    原文地址: https://www.jianshu.com/p/722386cf32c9
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞