一、为什么我们要选用Python进行建模
目前做科学计算,主要使用MATLAB, R语言, Python 这三种语言。
首先讲MATLAB,确实好用,但是呢……
- MATLAB是一款价格不菲的商用软件(什么,你说可以用盗版,盗版MATLAB最多自己学习的时候玩玩,你用盗版MATLAB工作或者搞学术试试);
- 其次,MATLAB语言虽算不上难学,也真的没有达到简单易懂的程度;
- 最后,MATLAB主要专注于工程和科学计算,领域有限,在工作中经常遇到要处理文件管理、界面设计、网络通信这样五花八门的要求,MATLAB这时候就显得有点不够用了。
其次呢,R语言,不知道小伙伴们用过没,我学过一点,并不深入。R语言据说是统计学家Ross Ihaka和Robert Gentlemen共同开发的,可以说是专门为数据处理而生的语言。曾经是学术界的主流,但是其地位正在被Python取代,主要是因为:
- R语言在处理大数据上的乏力,处理大数据时往往需要先用数据库把大数据转换成小数据;
- 速度上不够快,比不过Python,一些底层算法用C语言写完之后封装成Python包可以使Python处理数据的速度大大提升。
Python呢,下面罗列Python的优点(缺点就不讲了):
- 最重要的,易学、易读、易维护;
- 具备极其丰富的扩展库,很多开源的科学计算软件包都提供了Python接口,比如计算机视觉库OpenCV、三维可视化库VTK之类的,Python专门的科学计算库就更多了,比如说我们之前的文章中提到的NumPy,matplotlib和SciPy(这个好像暂时还没用过)还有Pandas和scikit-learn这样功能强大库可供使用。
- 作为一门被广泛应用的语言,Python可以实现科学计算所需要的各种附加功能,自由度极高。
二、Python2还是Python3
这个问题仁者见仁,看习惯吧,我个人用的Python3.4.4,我喜欢用最新版的前一版,同时具备新功能和对旧版本的兼容性。现在大部分常用的第三库都已经支持Python3了,像NumPy、SciPy、matplotlib、Cython、Pandas、OpenCV和Spyder等。但是少量库还没有移植过来,像Traits、TVTK和Mayavi这样的。
三、选择什么样的工具
- Anaconda
这个软件我在公司的一台32位XP系统中没有装成功,试了几次之后放弃了。
我用的是Windows
Anaconda安装时,你可选择修改PATH环境变量和注册表,这样就可以在命令行中使用conda命令来管理扩展库了。
有这么几个常用命令:
conda list ->列出所有的扩展库
conda update 扩展库名 ->升级扩展库
conda install 扩展库名 ->安装扩展库
conda search 模板 ->搜索符合模板的扩展库
- WinPython或者Python(x,y)
这两个其实是同一个作者开发的,现有Python(x,y)然后有WinPython,我两个都试了一下,感觉WinPython用户友好度更高一点,安装简便,甚至可以装在U盘里面,便携性和兼容性都很好,推荐WinPython。
WinPython扩展库的安装可以通过WinPython Control Panel 进行安装,操作起来很简单,就不介绍了。
- 其他
另外还有Enthought Canopy和Sage,这两个我没有用过,就不乱讲了,以后有时间试一下给大家出个详细的评测报告吧……
四、IDE选择
- Spyder
这个正是我现在在用的:
它具有模仿MATLAB的工作空间的功能,可以很方便地观察和修改数组的值。显示哪些窗口可以自定义,很方便。
使用中出现了一些小问题,比如说str()函数报错,cmd prompt 乱码之类的,后来就没有用Spyder跑过比较长的代码了,调试起来太麻烦了,于是,我转向了PyCharm。
- PyCharm
这算一个非常强大的PythonIDE,功能十分强大,界面也挺好看的。不过就初学者而言,没有必要,功能多了反而迷眼。等以后要开发大型应用程序的时候再学也不迟。
我对比使用了一段时间之后发现这个确实好用,比Spyder省心多了。