离线下载
PDF版 ePub版

老齐 · 更新于 2018-11-28 11:00:43

为计算做准备

闲谈

计算机姑娘是擅长进行科学计算的,本来她就是做这个的,只不过后来人们让她处理了很多文字内容罢了,乃至于现在有一些人认为她是用来打字写文章的(变成打字机了),忘记了她最擅长的计算。

每种编程语言都能用来做计算,区别在于编程过程中,是否有足够的工具包供给。比如用汇编,就得自己多劳动,如果用 Fortran,就方便得多了。不知道读者是否听说过 Fortran,貌似古老,现在仍被使用。(以下引文均来自维基百科)

Fortran 语言是为了满足数值计算的需求而发展出來的。1953 年 12 月,IBM 公司工程师约翰·巴科斯(J. Backus)因深深体会编写程序很困难,而写了一份备忘录给董事长斯伯特·赫德(Cuthbert Hurd),建议论为 IBM704 系統设计全新的电脑语言以提升开发效率。当时 IBM 公司的顾问冯·诺伊曼强烈反对,因为他任认为不切实际而且根本不必要。但赫德批准了这项计划。1957 年,IBM 公司开发出第一套 FORTRAN 语言,在 IBM704 电脑上运作。历史上第一支 FORTRAN 程式在马里兰州的西屋貝地斯核电厂实验室。1957 年 4 月 20 日星期五的下午,一位 IBM 软件工程师決定在电厂內编译第一支 FORTRAN 程式,当程式码输入后,经过编译,印表机列出一行讯息:“原始程式错误……右侧括号后面沒有逗号”,这让现场人员都感到讶异,修正这个错误后,印表机输出了正确結果。而西屋电器公司因此意外地成为 FORTRAN 的第一个商业用戶。1958 年推出 FORTRAN Ⅱ,几年后又推出 FORTRAN Ⅲ,1962 年推出 FORTRAN Ⅳ 后,开始广泛被使用。目前最新版是 Fortran 2008。

还有一个广为应用的不得不说,那就是 matlab,一直以来被人称赞。

MATLAB(矩阵实验室)是 MATrix LABoratory 的缩写,是一款由美国 The MathWorks 公司出品的商业数学软件。MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB 还可以用来创建用户界面及与调用其它语言(包括 C,C++,Java,Python 和 FORTRAN)编写的程序。

但是,它是收费的商业软件,虽然在某国这个无所谓。

还有 R 语言,也是在计算领域被多多使用的。

R 语言,一种自由软件程式语言与操作环境,主要用于统计分析、绘图、数据挖掘。R 本來是由来自新西兰奥克兰大学的 Ross Ihaka 和 Robert Gentleman 开发(也因此称为 R),现在由“R 开发核心团队”负责开发。R 是基于 S 语言的一个 GNU 计划项目,所以也可以当作 S 语言的一种实现,通常用 S 语言编写的代码都可以不作修改的在 R 环境下运行。R 的语法是來自 Scheme。

最后要说的就是 Python,近几年使用 Python 的领域不断扩张,包括在科学计算领域,它已经成为了一种趋势。在这个过程中,虽然有不少人诟病 Python 的这个慢那个解释动态语言之类(这种说法是值得讨论的),但是,依然无法阻挡 Python 在科学计算领域大行其道。之所以这样,就是因为它是 Python。

  • 开源,就这一条就已经足够了,一定要用开源的东西。至于为什么,本教程前面都阐述过了。
  • 因为开源,所以有非常棒的社区,里面有相当多支持科学计算的库,不用还等待何时?
  • 简单易学,这点对那些不是专业程序员来讲非常重要。我就接触到一些搞天文学和生物学的研究者,他们正在使用 Python 进行计算。
  • 在科学计算上如果用了 Python,能够让数据跟其它的比如 web 无缝对接,这不是很好的吗?

当然,最重要一点,就是本教程是讲 Python 的,所以,在科学计算这块肯定不会讲 Fortran 或者 R,一定得是 Python。

安装

如果读者使用 Ubuntu 或者 Debian,可以这样来安装:

sudo apt-get install Python-numpy Python-scipy Python-matplotlib ipython ipython-notebook Python-pandas Python-sympy Python-nose

一股脑把可能用上的都先装上。在安装的时候,如果需要其它的依赖,你会明显看到的。

如果是别的系统,比如 windows 类,请自己网上查找安装方法吧,这里内容不少,最权威的是看官方网站列出的安装:http://www.scipy.org/install.html

基本操作

在科学计算中,业界比较喜欢使用 ipython notebook,前面已经安装。在 shell 中执行

ipython notebook --pylab=inline

得到下图的界面,这是在浏览器中打开的:

在 In 后面的编辑去,可以写 Python 语句。然后按下 SHIFT+ENTER 或者 CTRL+ENTER 就能执行了,如果按下 ENTER,不是执行,是在当前编辑区换行。

Ipython Notebook 是一个非常不错的编辑器,执行之后,直接显示出来输入内容和输出的结果。当然,错误是难免的,它会:

注意观察图中的箭头所示,直接标出有问题的行。返回编辑区,修改之后可继续执行。

不要忽视左边的辅助操作,能够让你在使用 ipython notebook 的时候更方便。

除了在网页中之外,如果你已经喜欢上了 Python 的交互模式,特别是你用的计算机中有一个 shell 的东西,更是棒了。于是可以:

$ ipython

进入了一个类似于 Python 的交互模式中,如下所示:

In [1]: print "hello, pandas"
hello, pandas

In [2]: 

或者说 ipython 同样是一个不错的交互模式。


总目录   |   上节:用 tornado 做网站 (7)   |   下节:Pandas 使用 (1)

如果你认为有必要打赏我,请通过支付宝:qiwsir@126.com,不胜感激。

上一篇: 用 tornado 做网... 下一篇: Pandas使用(1)