Python科学计算 第二版

第二版序

Python世界的发展日新月异,在本书第一版出版之后,Python在数据处理、科学计算领域又出现了许多新的进展:

  • IPython项目获得了100多万美元的资助,开发进程得到了极大地提升,最近1.0就快要正式发布了,它集成了Notebook、并行运算等多项新功能。其中Notebook已经成为Python科学计算界的标准配置。
  • NumPy的创始人Travis Oliphant在离开Enthought之后,创建了CONTINUUM,致力于将Python大数据处理方面的应用。最近推出的Numba项目能够将处理NumPy数组的Python函数JIT编译为机器码执行,从而上百倍的提高程序的运算速度。而基于浏览器的Python开发环境wakari(http://www.continuum.io/wakari) 能省去配置Python开发环境的麻烦。
  • Pandas经过几个版本周期的迭代,目前已经成为数据整理、处理、分析的不二选择。
  • OpenCV官方的扩展库cv2已经正式出台,它的众多图像处理函数能直接对NumPy数组进行处理,便捷图像处理、计算机视觉程序变得更加方便、简洁。
  • 虽然matplotlib的创始人John Hunter不幸因病早逝,但matplotlib已经拥有稳定开发社区,最新发布的1.3版本添加了WebAgg后台绘图库,能在浏览器中显示图表并与之进行交互。相信不久这一功能就会集成到IPython Notebook中去。
  • 随着SymPy 0.7.3的发布,它已经逐渐从玩具项目发展成熟。一位高中生使用在线运行SymPy代码的网站:http://www.sympygamma.com
  • Cython已经内置支持NumPy数组,它已经逐渐成为编写高效运算扩展库的首选工具。例如Pandas中绝大部分的提速代码都是采用Cython编写的。
  • NumPy、SciPy等也经历了几个版本的更新,许多计算变得更快捷,功能也更加丰富。
  • WinPython、Anaconda等新兴的Python集成环境无须安装,使得共享Python程序更方便快捷。
  • 随着Python3逐渐成为主流,IPython, NumPy, SciPy, matplotlib, Pandas, Cython等主要的科学计算扩展库也已经开始支持Python3了。

所有这些发展让我不得不觉得该是着手编写《Python科学计算-第二版》的时候了,预计这本书将涉及上述所有令人兴奋的发展,增改第一版中50%以上的内容。这次我将完全使用IPython Notebook编写本书,这意味着所有的代码都是经过验证的,只要读者安装了相同的Python开发环境,就能得到相同的结果。

这将是一个漫长而有趣的过程,请各位感兴趣的读者长期关注本书的变化,并在 http://hyry.dip.jp/tech/forum/index 中留下您宝贵的意见和建议。如果对每章节的内容有任何疑问和建议,请在页面下方的评论栏中留言。

第一版序

Python是一种面向对象的、动态的程序设计语言,具有非常简洁而清晰的语法,既可以用于快速开发程序脚本,也可以用于开发大规模的软件,特别适合于完成各种高层任务。

随着NumPy、SciPy、matplotlib、ETS等众多程序库的开发,Python越来越适合于做科学计算。与科学计算领域最流行的商业软件MATLAB相比,Python是一门真正的通用程序设计语言,比MATLAB所采用的脚本语言的应用范围更广泛,有更多程序库的支持,适用于Windows和Linux等多种平台,完全免费并且开放源码。虽然MATLAB中的某些高级功能目前还无法替代,但是对于基础性、前瞻性的科研工作和应用系统的开发,完全可以用Python来完成。

本书介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,还着重介绍了如何制作交互式二维、三维图像,如何设计精巧的程序界面,如何与C语言编写的高速计算程序结合,如何编写声音、图像处理算法等内容。

由于Python的相关资源非常多,本书不可能全部涉及,相信读者在掌握本书所介绍的一些相关知识之后,只要充分利用互联网的搜索功能,就一定能够很快地找到合适的Python解决方案。此外,由于绝大多数Python资源都开放源代码,所以读者将会很容易地对感兴趣的内容进行深度挖掘和研究。

本书适合于工科高年级本科生、研究生、工程技术人员以及计算机开发人员阅读。实例篇以信号处理为主,通过简单易懂的Python源程序,实际演示信号处理的一些基础知识和原理,因此特别适合于相关专业的学生作为扩展视野的补充阅读教材。

阅读本书的读者需要掌握Python语言的一些基础知识,下面是一个“自我检测列表”,如果读者熟悉下述内容,阅读本书的实例源代码就应该没有困难。此外由于Python程序简单易读,即使读者没有接触过Python,也可以边阅读本书边通过其它书籍或免费教程学习Python。

  • 基本语法:库的载入(import)、循环(for、while)、判断(if)、函数定义(def)
  • 基本数据类型的用法:列表(list)、字典(dict)、元组(tuple)、字符串
  • 面向对象的基本语法:类(class)、继承
  • C语言编程的基础知识

有关Python语言的基础知识,可以参考啄木鸟社区的Python图书简介。http://wiki.woodpecker.org.cn/moin/PyBooks

.. toctree:: :maxdepth: 2

ipython.rst
numpy.rst
matplotlib.rst
scipy.rst
sympy.rst
pandas.rst
cython.rst