科学计算的Python发行版和环境

21 投票
3 回答
17734 浏览
提问于 2025-04-16 21:40

如果这个问题太宽泛,我先道个歉。我来自MATLAB的世界,对Python的经验相对较少。

我花了一些时间了解几种基于Python的科学计算环境和发行版,但我觉得自己仍然没有完全搞清楚这些解决方案的全貌,尤其是一些重要的包之间的关系,包括:

更具体来说:

  • 以上这些包有没有提供类似的功能?它们是互补的吗?
  • 安装其中的任何一个包是否包括或需要安装其他的包?如果是的话,哪些包是互相包含或需要的?

不太重要的是,还有没有其他类似的包提供相似的功能?

提前谢谢你们!

3 个回答

2

这个链接可能会对你有帮助:https://www.cfa.harvard.edu/~ebresser/python/

这是哈佛大学一位天体物理学家的页面。他分享了从ITT-VIS IDL转到Python的经验,主要是在OS-X系统上(不过大部分建议在其他操作系统上也适用)。

补充:看起来这个页面已经被删除了。对于科学家或工程师来说,另一个不错的Python入门资料可以在这个文档中找到(注意,这个PDF文件比较大):http://stsdas.stsci.edu/perry/pydatatut.pdf希望这个不会被删掉!

4

关于问题中不太重要的部分:

  • Anaconda 是一个很有名的完整软件包,类似于 Enthought 和 Sage。它里面包含了 IPython、Spyder 等工具,还可以让你轻松切换不同的 Python 版本和环境。
  • PyCharm 是另一个很有名的开发工具,我个人比较喜欢用这个。
33

用Python进行科学计算就像是在一个普通的编程语言上加上了一堆模块,这些模块实现了MATLAB的一些功能。因此,使用Python进行科学编程的体验有点不连贯,相比之下MATLAB要更统一。不过,Python作为一种语言要干净得多。这就是情况。

进行科学计算时,Python中基本需要的模块有NumpyMatplotlibSciPy,如果你要做3D绘图,还需要Mayavi/VTK。这些模块都依赖于Numpy。

Numpy实现了一种新的数组类型,行为类似于MATLAB的数组(也就是可以快速进行向量计算)。它还定义了一堆函数来进行这些计算,通常这些函数的名字和MATLAB中的类似函数是一样的。

Matplotlib允许进行2D绘图,使用的命令和MATLAB非常相似。Matplotlib还定义了pylab,这是一个模块,通过一次导入就可以把大部分Numpy和Matplotlib的函数引入到全局命名空间中。这在快速或交互式脚本中非常有用,因为你不需要输入很多命名空间前缀。

SciPy是一个包含多个Python模块的集合,这些模块在SciPy的框架下对科学家很有用。SciPy模块中提供了拟合例程。Numpy是SciPy的一部分。

Spyder是一个桌面IDE(基于QT),它大致模仿MATLAB的IDE。它是Python-XY发行版的一部分。

IPython提供了一个增强版的交互式Python命令行,非常适合尝试代码、运行脚本和与结果互动。现在,它不仅可以在传统的控制台中使用,还可以通过网页界面访问。它也嵌入在Spyder IDE中。

发行版

在你的电脑上运行这些模块可能会花费很多时间,所以有一些发行版把它们(还有很多其他模块)打包好了。

Python-XYWinPythonEnthought,以及最近的Anaconda,都是完整的包发行版,包含所有核心模块,虽然Enthought不包含Spyder。

Sage是另一个编程环境,可以通过网络或命令行使用,也包含很多其他模块的完整包。传统上,它是作为一个基于Linux安装的VMWare镜像提供的。虽然你在Sage环境中写的是Python,但它和普通的Python编程有点不同,它定义了自己的一种语言和方法。

如果你使用Windows,我建议安装WinPython。它安装了你需要的一切,包括Scipy和Spyder(在我看来是Python中最好的MATLAB替代品),而且由于它是独立设计的,不会干扰你系统中其他的Python安装。如果你在OSX上,Enthought可能是最好的选择——Spyder可以单独安装,比如使用MacPorts。对于Linux,你可以单独安装各个组件(Numpy、SciPy、Spyder、Matplotlib)。

我个人不太喜欢Sage那种“隐藏在背后”的Python工作方式,但你可能会喜欢。

撰写回答