我正在考虑从MATLAB切换到Python。该应用程序是定量交易,成本并不是真正的问题。我喜欢MATLAB的一些东西,我想知道Python如何堆叠(在我读过的评论中找不到任何答案)。
是否有适合Python的IDE(MATLAB)(变量编辑器,调试器,分析器)?我读过关于Spyder的好东西,但是它有一个探查器吗?
在MATLAB中更改路径上的函数时,会自动重新加载。更改库时是否必须手动重新导入库,还是可以自动完成?这是一件小事,但实际上大大提高了我的工作效率。
答案 0 :(得分:19)
IDE:不会。虽然我听说过Wing IDE的好东西,但是Python IDE远没有MATLAB那么好或成熟。一般来说,我发现IDE对于Python开发来说总是过度杀伤,并且发现使用设置良好的文本编辑器(在我的情况下是vim)和单独的可视化调试器(WinPDB)时我会更有效率。
更改功能:使用reload()
内置功能进行更改后,必须重新加载模块。
import foo
#now you've changed foo.py and want to reload it
foo = reload(foo)
我已将自己从MATLAB切换到Python,因为我发现Python在复杂性方面做得更好,即我发现在Python中编写,调试和维护复杂代码更容易。其中一个原因是Python是一种通用语言,而不是专业的矩阵操作语言。因此,像字符串,非数值数组和(关键)关联数组(或映射或字典)这样的实体是Python中的第一类构造,类也是如此。
关于功能,使用NumPy,SciPy和Matplotlib,你几乎拥有MATLAB提供的所有功能,以及你需要购买单独工具箱的很多东西。
答案 1 :(得分:12)
我在Python(x,y)发行版中使用Spyder IDE已经很好了。我是Matlab的长期用户,已经知道Python的存在已有10年左右,但只是因为我安装了Python(x,y),我才开始定期使用Python。
答案 2 :(得分:8)
您可能还想查看以下主题中的一些答案,尽管它们没有解决您的两个主要问题:
我也是Matlab的完全转换:
我还没有使用功能齐全的Python IDE,但是在IPython中与Matplotlib,Numpy,Scipy等结合使用得很好。我实际上使用了预装了大部分的Enthough Python Distribution。我需要的科学/定量包装。我也听说过有关Python(x,y)和Sage
也许其他IDE会处理这个问题,但在IPython中我使用的autoreload运行得相当好。
正如其他人所提到的那样,由于数字/定量库来自Python而不是一个顶层语言的数字库,你拥有令人难以置信的灵活性,而你没有使用Matlab。 Python社区,特别是数字/定量领域,真的非常棒。
答案 3 :(得分:6)
我已经在工程领域工作了一段时间,而且我总是使用MATLAB进行高复杂度的数学计算。我从来没有真正遇到过任何重大问题,但我对它也没有超级热情。几个月前,我发现我将成为一个数值方法类的TA,并且它将使用Python进行教学,所以我必须学习这门语言。 我最初认为额外的工作原来是一个很棒的爱好。我甚至无法开始描述MATLAB与Python相比有多糟糕!过去常常带我一整天在Matlab中编写代码只花了几个小时用Python编写。我的代码看起来也更具吸引力。 Python的性能和灵活性让我感到惊讶。使用Python,我可以在MATLAB中做任何我曾经做过的事情,我可以做得更好。
如果有人在考虑转换,我建议你这样做。它让我的生活变得更轻松。我将引用"计算科学的Python脚本"因为他们比我更好地描述Python优于MATLAB的优点:
- python编程语言更强大
- python环境是完全开放的,用于集成 使用外部工具,
- 一个包含大量功能和类的完整工具箱/模块可以包含在一个文件中(与一堆M文件形成对比),
- 将函数作为函数的参数传递更简单,
- 嵌套的异构数据结构易于构建和使用,
- 面向对象编程更方便,
- 更好地支持C,C ++和fortran代码的连接,因此更简单,
- 标量函数在更大程度上使用数组参数(不需要修改算术运算符),
- 源是免费的,可在更多平台上运行。
答案 4 :(得分:3)
我们使用Wing IDE进行Python开发。功能非常强大,集成了调试支持,可以连接到您选择的分析器。
关于(2),我确切地知道你的意思,因为我错过了Lisp的相同功能,据我所知,你需要在更改后重新导入库。这不是一个真正的挂断,因为你可以轻松地编写(一次)一个小函数,为你关心的每个模块执行该操作,然后将该函数放在一个关键的宏上,这样你所要做的就是例如在更改代码后点击CTRL-T。
答案 5 :(得分:3)
可以从MATLAB切换到Python,因为Python处理复杂性更好,即更容易编写,调试和维护复杂的代码。其中一个很好的理由是,Python是一种通用语言而不是矩阵操作语言。因此,像非数值数组,字符串和关联数组这样的实体是Python中的第一类构造。
我们经常听到人们和整个研究小组从 Matlab过渡到Python 。科学的Python生态系统正在快速成熟,Python是一个吸引人的选择,因为它免费,开源,并且变得越来越强大 。让我们详细探讨它们。
Matlab和Python的生态系统
根据定义,Python是一种编程语言。最常见的实现是在C中也称为CPython,主要称为 Python 。除了编程语言和解释器之外,Python还包含一个广泛的标准库。该库旨在进行一般编程,包含用于操作系统特定内容,线程,网络,数据库等的模块。
Matlab是一种商业数值计算环境和编程语言。 Matlab的概念指的是整个包,包括IDE。标准库不包含通用编程功能,但包括矩阵代数和用于数据处理和绘图的扩展库。对于额外的功能,Mathworks提供了工具包(但这些工具包更多)。
要在Python中进行科学计算,您需要其他软件包(例如Numpy
,Scipy
,Matplotlib
)。此外,您还需要 IDE 。许多pythoneers来自Linux环境并使用Python shell和编辑器(如vi或Emacs),但来自Matlab的人更喜欢功能丰富的IDE。现在,有许多适用于Python的轻量级IDE,例如PyCharm,Spyder,Jupyter Notebook等等。
Python包由不同的(但通常是重叠的)人群开发,他们也是包的用户。许多包装可用于不同目的。在这个开源生态系统中,大多数软件包由少数核心开发人员驱动,但许多软件包用户通过报告问题,帮助编写文档以及对代码进行小的改进来为开发做出贡献。
让我们从Matlab中获得一些优势:
Simulink
是一种产品
还没有好的选择。这里我们不打算让Matlab看起来很糟糕。我曾经爱过Matlab。但是,我认为Matlab有一些基本的缺点。其中大部分源于其商业性质:
算法是专有的,这意味着您无法看到代码 您正在使用的大多数算法,并且必须相信它们 已正确实施。
Matlab非常昂贵,这意味着编写的代码 Matlab只能由资金充足的人使用才能购买 许可证。
当然,Mathworks对代码可移植性施加了限制
能够在别人的电脑上运行你的代码。你可以运行你的
使用Matlab Component Runtime (MCR)
编译的应用程序,但是
您的便携式应用必须与已安装的版本完全匹配
MCR
,考虑到Matlab发布了一个新内容,这可能会令人讨厌
版本每6个月一次。
专有性质也使第三方难以延长 Matlab的功能。
此外,还有一些其他问题源于Matlabs起源作为矩阵操作包:
Python语言在软件开发公司中具有多样化的应用,例如游戏,Web框架和应用程序,语言开发,原型设计,图形设计应用程序等。这使得该语言比业内使用的其他编程语言更加广泛。在获得Python的一些优势之前,只需快速浏览一下here。现在让我们看看它的一些优点 -
广泛的支持库
它提供了大型标准库,包括字符串等区域 操作,Internet,Web服务工具,操作系统接口和 协议。大多数高度使用的编程任务已编写成脚本 它限制了用Python编写的代码的长度。
整合功能
Python集成了企业应用程序集成,使其易于使用 通过调用COM或COBRA组件来开发Web服务。它有力量 通过Jython直接通过C,C ++或Java调用的控制功能。 Python还可以处理XML和其他标记语言,因为它可以在所有语言上运行 现代操作系统通过相同的字节代码。
提高程序员的工作效率
该语言具有广泛的支持库和干净的面向对象设计 使用时,程序员的工作效率提高了2到10倍 Java,VB,Perl,C,C ++和C#等语言。
<强>生产力强>
凭借其强大的流程集成功能,单元测试框架和 增强的控制能力有助于提高大多数人的速度 应用的应用和生产力。这是一个很好的选择 构建可扩展的多协议网络应用程序。
Python的缺点
Python具有各种有利的功能,程序员更喜欢这种语言,因为它易于学习和编写代码。但是,这种语言仍然没有在包括企业开发商店在内的一些计算领域占据一席之地。因此,这种语言可能无法解决某些企业解决方案,并且限制包括 -
难以使用其他语言
Python爱好者已经习惯了它的功能和广泛的功能
图书馆,因此他们在学习或从事其他编程时遇到问题
语言。 Python专家可能会看到强制转换values
或变量的声明
types
,添加花括号或半冒号的句法要求
繁重的任务。
移动计算能力不足
Python已经在许多台式机和服务器平台上出现,但确实如此 被视为移动计算的弱语言。这是很少的原因 移动应用程序就像Carbonnelle一样内置。
速度缓慢
Python在解释器而不是编译器的帮助下执行 导致它减慢,因为编译和执行有助于它工作 一般。另一方面,可以看出它对许多网络来说很快 应用程序也是如此。
运行时错误
Python语言是动态类型的,因此它有许多设计限制 一些Python开发人员报告的。甚至可以看出它需要 更多的测试时间,最终应用程序出现错误 运行
欠发达的数据库访问层
与流行的技术(如JDBC和ODBC)相比,Python是 发现数据库访问层有点不发达和原始。 但是,它不能应用于需要平滑交互的企业 复杂的遗留数据
Python优于Matlab的优势
Python代码比Matlab代码更紧凑,更易于阅读
与Matlab不同,后者使用end语句来表示块的结尾, Python根据缩进确定块大小。
Python使用方括号来表示函数和的括号和括号 方法,而Matlab使用括号,使Matlab更多 难以区分和理解。
Python更好的可读性可以减少错误并加快调试速度。
虽然大多数编程语言(包括Python)都使用从零开始的索引, Matlab使用基于一的索引,使用户更容易混淆 平移。
Python中的面向对象编程(OOP)具有简单的灵活性 Matlab的OOP方案复杂且令人困惑
Python是免费且开放的
虽然Python是开源编程,但很多Matlab都已关闭
Python的开发人员鼓励用户输入建议 软件,而Matlab的开发人员没有提供这样的互动
Python在图形包和工具集中提供了更广泛的选择
使用NumPy
,SciPy
和Matplotlib
,您几乎拥有MATLAB提供的所有功能,以及您提供的大量功能。 d必须购买单独的工具箱。
但是,MatLab社区有自己的论据来选择Matlab or Python,(严肃的是)。虽然很好读。
答案 6 :(得分:2)
几乎所有东西都被其他人覆盖..我希望你不需要任何工具箱,如优化工具箱,神经网络等。[我没有找到这些python可能有一些...我很怀疑他们可能比Matlab更好..]
如果你不需要符号操作功能并使用windows python(x,y)就行了[他们的linux端口没有太多活动(旧版本可用)] (或需要一些小的符号操作使用sympy,我认为它附带EPD和python(x,y)取代/集成EPD)
如果你需要象征性的能力圣人是要走的路,恕我直言的圣人在Matlab以及Mathematica中表现出色。
我也试图改变......(需要我的engg项目)
我希望它有所帮助......
答案 7 :(得分:2)
aptana与eclipse相同(因为pydev)但是aptana有主题和eclipse缺少的不同的小东西
关于python的一点点, 不要忘记大熊猫,因为它(我相信)是非常强大的数据分析工具 我认为这将成为未来的野兽我正在研究matlab,我看到一些整洁的东西,特别是gui接口和其他一些好东西
但是python为您提供了灵活性和轻松性, 无论如何,你仍然需要学习python,matplotlib,numpy(以及最终的pandas)的基础知识
但是从我看到的,numpy和matplotlib与matplotlib概念类似(可能它们是用matlab创建的,对吧?)
答案 8 :(得分:2)
2011年提出了这个问题。
最近,在2013年中期,我已经完全转换为Python,主要是因为可以使用类似Matlab的Spyder IDE,以及整个Scientific Python&amp; amp的整体安装程序。 ; IDE环境。
PythonXY(仅限Windows)和Continuum Analytics' Anaconda(Mac / Win / Linux)可以在类似matlab的IDE(Spyder)中使用变量检查器快速启动并运行,无需配置,文件浏览器,对象检查器(显示您键入的函数的实时帮助)等。它现在是我的完整Matlab替换。
答案 9 :(得分:1)
关于IDE问题,请查看What IDE to use for Python?,其中最常见的答案是使用Eclipse的PyDev。
我也认为Sage可能值得一看
答案 10 :(得分:1)
我最近从MATLAB切换到了Python(转换大约2个月),使用Sublime Text 2,使用SublimeRope和SublimeLinter插件提供一些类似IDE的功能,以及pudb提供一些图形交互式调试功能。
我还没有探索过分析器或变量编辑器。 (无论如何,我从未真正使用过MATLAB变量编辑器。)