我考虑从MATLAB转换到Python。 应用程序是量化交易,成本并不是真正的问题。 我喜欢MATLAB的一些东西,想知道Python如何比较(在我读过的评论中找不到答案)。
是否有适用于Python的IDE与MATLAB一样好(变量编辑器、调试器、分析器)?我读过关于Spyder的好评,但它有分析器吗?
当您在MATLAB上更改路径上的函数时,它会自动重新加载。 在更改库时,您是否必须手动重新导入库,或者可以自动完成? 这是一个小问题,但实际上极大地提高了我的生产力。
我考虑从MATLAB转换到Python。 应用程序是量化交易,成本并不是真正的问题。 我喜欢MATLAB的一些东西,想知道Python如何比较(在我读过的评论中找不到答案)。
是否有适用于Python的IDE与MATLAB一样好(变量编辑器、调试器、分析器)?我读过关于Spyder的好评,但它有分析器吗?
当您在MATLAB上更改路径上的函数时,它会自动重新加载。 在更改库时,您是否必须手动重新导入库,或者可以自动完成? 这是一个小问题,但实际上极大地提高了我的生产力。
IDE: 不行。Python的集成开发环境还远远达不到MATLAB那样好用和成熟,虽然我听说过Wing IDE很不错。一般来说,我觉得使用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提供的所有功能上进行工作,以及很多需要购买单独工具箱的东西。
我一直很喜欢在Python(x,y)套件中使用Spyder IDE。作为Matlab的长期用户,我大约10年前就知道了Python的存在,但仅自从我安装了Python(x,y)以来,我才开始经常使用Python。
你可能还想查看以下帖子中的一些答案,虽然它们没有解决你的两个主要问题:
我也是从Matlab彻底转换过来的:
我还没有使用全功能的Python IDE,但在IPython中与Matplotlib、Numpy、Scipy等相结合使用效果很好。我实际上使用了Enthough Python Distribution,它预装了我需要的大多数科学/量化包。我还听说过Python(x,y)和Sage。
也许其他IDE可以处理这个问题,但在IPython中我使用autoreload,这个功能工作得相当不错。
正如其他人所提到的,由于数值/量化库已经成为Python的组成部分,而不是在其之上构建一个数值库,因此您拥有了与Matlab所没有的极高灵活性。此外,特别是在数值/量化领域,Python社区真的非常出色。
我们使用Wing IDE进行Python开发。它功能齐全,集成了调试支持,并且可以连接到您选择的分析器。
关于(2),我知道你指的是什么,因为我也从Lisp中错过了同样的功能,据我所知,在更改库后,您需要主动重新导入它们。不过这并不是真正的障碍,因为您可以轻松编写一个小函数(一次性),为您关心的每个模块执行该操作,然后将该函数放在快捷键上,这样您只需按下CTRL-T即可更改代码后实现。
这个问题是在2011年提出的。
最近,在2013年中期,我完全转向了Python,主要是因为类似于Matlab的Spyder IDE以及整个Scientific Python和IDE环境的一体化安装程序的可用性。
PythonXY(仅限Windows)和Continuum Analytics' Anaconda(Mac / Win / Linux)可以让您快速启动,并在类似于Matlab的IDE(Spyder)中运行,具有变量检查器,文件浏览器,对象检查器(显示您键入的函数的实时帮助)等等。现在它已经成为我完整的Matlab替代品。
Numpy
、Scipy
、Matplotlib
)。此外,你需要一个集成开发环境(IDE)。许多Python程序员来自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的功能。
此外,还有一些其他问题源于Matlab作为一个矩阵操作包的起源:
分号。在控制台中输入代码时,使用分号可以显示结果,但在脚本中,为了抑制输出,必须以分号结束一行是没有意义的。 索引使用花括号而不是方括号进行,这使得很难将其与函数调用区分开来。Python语言在软件开发公司中有着多元化的应用,例如游戏开发、Web框架和应用程序、语言开发、原型设计、图形设计应用等。这使得该语言比其他行业使用的编程语言更具优势。在了解Python的一些优势之前,请先快速浏览此处。现在让我们看看它的一些优点-
广泛的支持库
它提供了大量的标准库,包括字符串操作、互联网、Web服务工具、操作系统接口和协议等领域。其中大部分常用的编程任务已经被脚本化,这限制了在Python中编写代码的长度。
集成功能
Python集成了企业应用程序集成,使得通过调用COM或COBRA组件来开发Web服务变得容易。它具有强大的控制能力,因为它可以直接通过C、C++或Java通过Jython进行调用。Python还处理XML和其他标记语言,因为它可以在所有现代操作系统上通过相同的字节码运行。
提高程序员的生产率
该语言具有广泛的支持库和清晰的面向对象设计,使用类似Java、VB、Perl、C、C++和C#等语言时,程序员的生产率可以提高两到十倍。
生产力
由于其强大的过程集成功能、单元测试框架和增强的控制能力,大多数应用程序的速度和生产力都得到了提高。它是构建可扩展的多协议网络应用程序的绝佳选择。
使用其他语言时存在困难
Python 爱好者对其特性和广泛的库非常习惯,因此在学习或使用其他编程语言时会遇到问题。Python 专家可能会认为声明转换值或变量类型、添加大括号或分号的语法要求是繁琐的任务。
移动计算能力较弱
Python 已经在许多桌面和服务器平台上存在,但在移动计算方面被认为是一种较弱的语言。这就是为什么很少有基于 Python 构建的移动应用程序,例如 Carbonnelle。
速度较慢
Python 依靠解释器执行,而不是编译器,这导致它速度较慢,因为编译和执行帮助它正常工作。另一方面,它也可以看作是许多 Web 应用程序的快速实现。
运行时错误
Python 语言是动态类型的,因此它有许多设计限制,这些限制被一些 Python 开发人员报告。甚至可以看到它需要更多的测试时间,并且错误最终在应用程序运行时显示。
未完善的数据库访问层
与流行技术如 JDBC 和 ODBC 相比,Python 的数据库访问层被认为是有些不完善和原始的。然而,在需要复杂遗留数据平稳交互的企业中,它无法应用。
for
语句的末尾添加冒号。 "Python 更好的可读性" 这取决于你习惯什么,它们都有时候会有晦涩的语法。 "Matlab 的开发人员没有提供这样的交互" 是的,他们提供了。此外,购买许可证可以获得客户支持。 [续] - Cris Luengoaddpath
。 “Python提供了更广泛的图形包和工具集选择。” MATLAB拥有最好的出版质量图形。 - Cris Luengo