函数库介绍

Python的科学计算功能由众多的扩展库协作完成。在本书的后续章节中,将对下列扩展库进行详细介绍。

数值计算库

NumPy为Python带来了真正的多维数组功能,并且提供了十分丰富的对数组进行处理和运算的函数集。它对常用的数学函数进行数组化,使这些数学函数能直接对数组进行运算,将本来需要在Python中进行的循环运算,转移到高效率的库函数中,充分利用这些函数能明显地提高程序的运算速度。

SciPy则在NumPy的基础之上添加了许多科学计算的函数库,其中一些函数是通过对久经考验的Fortran数值计算库进行包装实现的,例如:

  • 线性代数使用LAPACK库
  • 快速傅立叶变换使用FFTPACK库
  • 常微分方程求解使用ODEPACK库
  • 非线性方程组求解以及最小值求解等使用MINPACK库

http://www.scipy.org

NumPy和SciPy官方网址

有了这两个库,Python就有几乎和MATLAB一样的数据处理能力了。此外SciPy中的Weave模块能在Python程序中直接嵌入C++程序,进一步提高程序的运算速度。

符号计算库

SymPy是一套数学符号运算的扩展库,虽然它目前还没有到达1.0版本,但是已经足够好用,可以帮助我们进行公式推导,做一些简单的符号运算工作。

界面设计

Python可以使用多种界面库编写GUI程序,例如以TK为基础的Tkinter、以wxWidgets为基础的wxPython、以QT为基础的pyQt4等界面库。但是使用这些界面库编写GUI程序仍然是一件十分繁杂的工作。为了让读者不在界面设计上耗费大量精力,从而能把注意力集中到数据处理之上,本书详细介绍了如何使用Traits库设计图形界面程序。

Traits库分为Traits和TraitsUI两大部分,使用Traits能对Python对象的属性进行类型定义,并为其添加初始化、校验、代理、事件处理等诸多功能。

TraitsUI库基于Traits库,使用MVC(模型—视图—控制器)模式快速地定义用户界面,在最简单的情况下,甚至不需要写一句界面相关的代码,就可以通过Traits的属性定义获得一个可用的图形界面。使用TraitsUI库编写的程序自动支持wxPython和pyQt界面库。

绘图与可视化

matplotlib和Chaco是两个很优秀的二维绘图库。matplotlib库能够快速地绘制精美的图表、以多种格式输出,并且带有简单的三维绘图功能。而Chaco则以Traits为基础,能够很方便地编写出交互式图表控件,并嵌入到用TraitsUI编写的界面程序中。

http://matplotlib.sourceforge.net

matplotlib官方网址

TVTK库对标准的VTK库用Traits进行了封装,如果要在Python中使用VTK,用TVTK是最方便的选择。Mayavi2则在TVTK的基础上再添加了一套面向应用的方便工具,它既可以单独作为三维可视化程序使用,也可以很方便地嵌入到TraitsUI编写的界面程序中。

VTK(Visualization Toolkit)

视觉化工具库(VTK, Visualization Toolkit)是一个开放源码,跨平台、支援平行处理(VTK曾用于处理大小近乎1个Petabyte的资料,其平台为美国Los Alamos国家实验室所有的具1024个处理器之大型系统)的图形应用函式库。2005年实曾被美国陆军研究实验室用于即时模拟俄罗斯制反导弹战车ZSU23-4受到平面波攻击的情形,其计算节点高达2.5兆个之多。 – 摘自维基百科

此外,使用Visual库能够快速、方便地制作三维动画演示,使数据更有说服力。

http://vpython.org

Visual官方网址

图像处理和计算机视觉

OpenCV最初是由英特尔公司开发的一套开源的跨平台计算机视觉库。它可用于开发实时的图像处理、计算机视觉以及模式识别程序。它有多套Python的调用接口,本书将以其中的pyOpenCV为例介绍OpenCV的一些基础知识。pyOpenCV库不但很全面地对OpenCV的各种函数和类进行了包装,还能在OpenCV的图像对象和NumPy数组之间进行互换。这样同时扩展了NumPy的图像处理能力,和OpenCV的数组处理能力。

http://code.google.com/p/pyopencv/

pyopencv项目的地址

內容目录

上一个主题

方便的开发工具

下一个主题

NumPy-快速处理数据

本页

loading...