知乎视频www.zhihu.com
我正巧两个语言都比较常用(我是从2010年开始使用MATLAB的, 从2013年开始使用Python.),从我的专栏里面就可以看出来:
MATLAB Python 机器学习www.zhihu.com
基于我的使用经验(肯定是不全面的, 比如我不用MATLAB的Simulink, 仅供参考):
Python强于MATLAB的地方:
1 可视化
主要归功于Seaborn库。
老版本的MATLAB绘图丑爆了, 新版本(最近几年, 具体哪个版本开始记不清了)的MATLAB绘图系统有大更新, 有美化, 但是还是不如seaborn.
知乎用户:仅就作图而言,Python 和 MATLAB 有可比性吗?www.zhihu.com
2 机器学习
主要归功于scikit-learn。
从模型的个数和API统一性来看, scikit-learn完爆MATLAB.
3 深度学习
主要归功于pytorch,TensorFlow。
更新一下: 从R2019b开始, 引入了dlarray格式, 可以实现自动求导(梯度), 理论上应该具备和pytorch, Tensorflow一样从底层构建深度学习模型的能力, 实际效果怎么样, 我也是刚刚更新版本, 还不太清楚, 等我用过一段时间再说.
4 数据处理
主要归功于pandas库。
pandas简直是是神器, 这个没办法, 不是MATLAB太弱, 是pandas太强.
关于pandas是否强大, 不能从大类功能来看, 关键在于细节和质量.
比如马拉多纳和一个业余球员, 从大类技术上, 是一样的, 都会传球, 头球, 射门, 盘带等等. 但是质量上相差十万八千里.
我不是说pandas与MATLAB的差距有这么大, 只是想说明进行比较的时候, 不能从大类上比较, 要看细节, 看质量.
5 循环加速
主要归功于numba库.
MATLAB的循环加速的话, 目前来看, 好像只能靠mex技术(本质上是用C/C++语言重写).
我之前写过相关的性能测试文章:
[高性能实战案例] MATLAB,Julia, Python(Numba)
https://zhuanlan.zhihu.com/p/53416615zhuanlan.zhihu.com
结果汇总一下(取平均值, 单位是秒):
MATLAB的向量化版: 10.207570
Julia的向量化版: 5.251
Julia的loop版: 2.952
Julia的loop2版: 1.731
Julia的loop3版: 0.321392
Python的numba版: 0.477
Julia, Python(Numba), C++, MATLAB 性能测试之“冰雹数”
https://zhuanlan.zhihu.com/p/51583154zhuanlan.zhihu.com
运行时间总结(单位是秒), 取每种语言速度最快的那个版本:
MATLAB: 4.134375
Julia(@inbounds) 1.142
C++(我写的代码): 1.869
Python(numba) 1.13
MATLAB的地方强于Python的地方:
1 信号处理
2 IDE
MATLAB的IDE设计出来就天生适合做数据分析的. Python的Spyder就模仿MATLAB的界面, 但是只模仿了一部分, 还是不如MATLAB.
3 各种工具包统一的数据格式。
Python的各个包是不同的作者团队独立开发的, 因此, 难以做到数据格式统一, API统一.
总结:
Python发展迅猛, 已经抢占了不少领域了, 比如数据分析, 机器学习, 深度学习.
MATLAB还是有它优势的领域, 这些领域暂时无法被替代.