美文网首页我爱编程
MATLAB与NumPy的对比

MATLAB与NumPy的对比

作者: 高正杰 | 来源:发表于2017-12-22 15:21 被阅读562次

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

本文目录

[TOC]


1. 算术运算

MATLAB Python 描述 备注
a.^b np.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. 关系运算

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

3. 逻辑运算

MATLAB Python 描述 备注
a && b a and b 单一元素与运算 只适应一个元素
a || b a 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) 存在非零元素就返回true len(np.nonzero(a)[0])>0
all(a) all(a) 所有元素不为零才返回true len(np.nonzero(a)[0])>0

4. 根运算与对数运算

MATLAB Python 描述 备注
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. 去尾运算

MATLAB Python 描述 备注
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. 数学常量

MATLAB Python 描述 备注
pi math.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. 向量

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

8. 序列

MATLAB Python 描述 备注
1:10 list(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:10 np.arange(1,11,3) 1,4,7,10
10:-1:1 np.arange(10,0,-1) 10,9,8,7,6,5,4,3,2,1
10:-3:1 np.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(:)=3 a.fill(3)
a[:]=3
将所有元素的值都赋为3

9. 拼接矩阵

MATLAB Python 描述 备注
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日搬家至此!

相关文章

网友评论

    本文标题:MATLAB与NumPy的对比

    本文链接:https://www.haomeiwen.com/subject/szxxgxtx.html