Python numpy和matlab的几点差异介绍

 更新时间:2022年07月12日 14:36:10   作者:there2belief  
这篇文章主要介绍了Python numpy和matlab的几点差异,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

numpy和matlab的几点差异

Python numpy和matlab都是便捷灵活的科学计算语言,两者具有很多相似之处,但也有一些混淆的地方,这里假定你熟悉matlab,但不了解numpy,记录几个numpy实例:

1、Numpy数组索引指定开始和结束时

不包括结束,也即下面的b和c是一样的。

a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
b = a[:2, 1:2]
c = a[:2, 1]

2、Numpy.ndarray切片的修改会引起原矩阵的修改

这与matlab不同。

a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
b = a[:2, 1:3]
# [[2 3]
#  [6 7]]
print(a[0, 1])   # Prints "2"
b[0, 0] = 77     # b[0, 0] is the same piece of data as a[0, 1]
print(a[0, 1])   # Prints "77"

3、numpy使用切片索引(例如1:2)不会产生降维

而使用整数索引(例如1)会产生降维。

import numpy as np
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
row_r1 = a[1, :]    # Rank 1 view of the second row of a
row_r2 = a[1:2, :]  # Rank 2 view of the second row of a
print(row_r1, row_r1.shape)  # Prints "[5 6 7 8] (4,)"
print(row_r2, row_r2.shape)  # Prints "[[5 6 7 8]] (1, 4)"
col_r1 = a[:, 1]
col_r2 = a[:, 1:2]
print(col_r1, col_r1.shape)  # Prints "[ 2  6 10] (3,)"
print(col_r2, col_r2.shape)  # Prints "[[ 2]
                             #          [ 6]
                             #          [10]] (3, 1)"

4、不同于matlab

numpy的转置对于1维数组的操作不发生变化。

v = np.array([1,2,3])
print(v)    # Prints "[1 2 3]"
print(v.T)  # Prints "[1 2 3]"

5、不同matlab对于矩阵预算要求大小一致

Numpy broadcasting直接支持操作(加减乘除等),要求前一个矩阵的最后一维度大小和待操作矩阵的大小相同。

x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
v = np.array([1, 0, 1])
y = x + v  # Add v to each row of x using broadcasting
print(y)  # Prints "[[ 2  2  4]
          #          [ 5  5  7]
          #          [ 8  8 10]

python与matlab的优缺点

如果要问我选哪个,我会建议两个都选。很多人喜欢拿python和matlab对比,然后得出哪个更好的结论。其实吧,够用就好。

如果是学生,或者研究人员,比如研究信号处理,那么用matlab比较好,有大量现成工具箱和前人的成果可以借鉴。如果是产品化项目,那么python比较好,可以做web后台,可以打包成应用程序,效率相对matlab也要高那么一点点。如果是信号、数据方面的工程人员,建议还是两个都掌握吧,也不复杂,都是脚本式的语言,比C++什么的易学多了。

下面从两者各自的应用做个对比。

1、python的优势

Python相对于Matlab最大的优势:免费。国内可能不是很在乎这个,但在国外是个很关键的问题。

Python次大的优势:开源。你可以大量更改科学计算的算法细节。

可移植性,Matlab必然不如Python。但你主要做Research,这方面需求应当不高。

第三方生态,Matlab不如Python。比如3D的绘图工具包,比如GUI,比如更方便的并行,使用GPU,Functional等等。长期来看,Python的科学计算生态会比Matlab好。

语言更加优美。另外如果有一定的OOP需求,构建较大一点的科学计算系统,直接用Python比用Matlab混合的方案肯定要简洁不少。

python作为一种通用编程语言,可以做做Web,搞个爬虫,编个脚本,写个小工具用途很广泛。

2、matlab的优势

学术界大量使用matlab做仿真,做研究的话容易找到代码参考;

语法相对python更灵活一些,matlab写程序基本不用套路,所谓老夫撸matlab就一个字,干;

有simulink。有人说simulink没什么用,其实还是挺有用的,比如通信建模,另外simulink可以生产DSP或者FPGA代码,有的时候很有用。

3、两者的区别

python是一种通用语言,而matlab更像是一个平台。

4、怎样选择

如果做研究,可以matlab为主;如果做产品,可以python为主。当然也有matlab做成产品的,打包成exe什么的都不是事。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python基础教程之五种数据类型详解

    python基础教程之五种数据类型详解

    这篇文章主要介绍了python基础教程之五种数据类型详解的相关资料,这里对Python 的数据类型进行了详细介绍,需要的朋友可以参考下
    2017-01-01
  • Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解

    Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解

    这篇文章主要介绍了Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句,结合实例形式详细分析Python3.5编程入门相关的变量、数据结构、常用条件与循环语句操作技巧及注意事项,需要的朋友可以参考下
    2019-04-04
  • Python tcp传输代码实例解析

    Python tcp传输代码实例解析

    这篇文章主要介绍了Python tcp传输代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python 遍历可迭代对象的实现方法

    python 遍历可迭代对象的实现方法

    本文主要介绍了python 遍历可迭代对象的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python3中urlencode和urldecode的用法详解

    Python3中urlencode和urldecode的用法详解

    今天小编就为大家分享一篇Python3中urlencode和urldecode的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 解决Django Haystack全文检索为空的问题

    解决Django Haystack全文检索为空的问题

    这篇文章主要介绍了解决Django Haystack全文检索为空的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python 设计模式行为型解释器模式

    Python 设计模式行为型解释器模式

    本文介绍了Python解释器模式,解释器模式即Interpreter Pattern,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子,下面文章进入更深层学习,需要的小伙伴可以参考一下
    2022-02-02
  • matplotlib.pyplot.plot()参数使用详解

    matplotlib.pyplot.plot()参数使用详解

    这篇文章主要介绍了matplotlib.pyplot.plot()参数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Python使用SQLAlchemy操作Mysql数据库的操作示例

    Python使用SQLAlchemy操作Mysql数据库的操作示例

    SQLAlchemy是Python的SQL工具包和对象关系映射(ORM)库,它提供了全套的企业级持久性模型,用于高效、灵活且优雅地与关系型数据库进行交互,这篇文章主要介绍了Python使用SQLAlchemy操作Mysql数据库,需要的朋友可以参考下
    2024-08-08
  • 使用GPT-3训练垃圾短信分类器示例详解

    使用GPT-3训练垃圾短信分类器示例详解

    这篇文章主要为大家介绍了使用GPT-3训练垃圾短信分类器示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论