程序员必会的40种算法
上QQ阅读APP看书,第一时间看更新

1.3 Python包简介

算法设计好后需要用编程语言来按照设计进行实现。本书中选择编程语言Python。之所以选择它,是因为Python是一种灵活且开源的编程语言。对于越来越重要的云计算基础设施,如亚马逊网络服务(AWS)、微软Azure谷歌云平台(GCP),Python也是其首选语言。

Python官方主页是https://www.python.org/,其中包含了安装说明和对你可能有所帮助的初学者指南。

如果你以前没有使用过Python,最好浏览一下初学者指南,以进行自学。对Python的基本了解将有助于你更好地理解本书所介绍的概念。

在本书中,我希望你能够使用Python 3的最新版本。在编写本书时,最新的版本是3.7.3,我们将用它运行本书中的练习。

1.3.1 Python包

Python是一种通用语言。在设计时,它仅带有最低限度的功能。根据使用Python的具体目的,你还可以安装附加包。安装附加包最简单的方法是通过pip安装程序。pip命令可以用来安装附加包:

已经安装的包需要定期更新,以获得最新的功能,这可以通过使用upgrade标识来实现:

另一个用于科学计算的Python发行版是Anaconda,它可以从http://continuum.io/downloads下载。

除了使用pip命令安装新包,对于Anaconda发行版,我们还可以选择使用如下命令安装新包:

如果要更新现有的软件包,Anaconda发行版提供了另一个选项,可以使用以下命令:

有各种各样的Python包可供选择,在接下来的小节中将介绍一些与算法相关的比较重要的包。

SciPy生态系统

Scientific Python (SciPy)——发音为sigh pie——是一组为科学界创建的Python包。它包含许多函数,包括各种随机数生成器、线性代数程序和优化器。SciPy是一个全面的软件包,并且随着时间的推移,人们开发了许多扩展,以根据自己的需求定制和扩展该软件包。

以下是属于这个生态系统的主要的包:

  • NumPy:对于算法来说,创建多维数据结构(如数组和矩阵)的能力非常重要。NumPy提供了一组数组和矩阵数据类型,这些数据类型对于统计和数据分析非常重要。关于NumPy的详细信息可以在http://www.numpy.org/找到。
  • scikit-learn:这个机器学习扩展是SciPy最受欢迎的扩展之一。scikit-learn提供了一系列重要的机器学习算法,包括分类、回归、聚类和模型验证。可以在http://scikit-learn了解更多关于scikit-learn的细节。
  • pandas:pandas是一个开源软件库。它包含了表格型的复杂数据结构,该数据结构在各种算法中广泛用于输入、输出和处理表格数据。pandas库中包含了许多有用的函数,它还提供了高度优化后的性能。想要找到更多关于pandas的细节,可以查看http://pandas.pydata.org/
  • Matplotlib:Matplotlib提供了强大的可视化工具。数据可以通过折线图、散点图、柱状图、直方图、饼图等形式呈现。要获得更多信息,请访问https://matplotlib.org/
  • Seaborn:Seaborn类似于在R语言中流行的ggplot2库。它基于Matplotlib,并且提供了优秀的界面用于绘制出色的统计图形。更多详情请访问https://seaborn.pydata.org/
  • iPython:iPython是一个增强的交互式控制台,旨在方便编写、测试和调试Python代码。
  • Running Python programs:交互式的编程模式对代码的学习和实验很有用。Python程序可以保存在一个以.py为扩展名的文本文件中,并且可以从控制台运行该文件。

1.3.2 通过Jupyter Notebook执行Python

运行Python程序的另一种方式是通过Jupyter Notebook。Jupyter Notebook提供了一个基于浏览器的用户界面来开发代码。本书使用Jupyter Notebook来展示代码示例。能够使用文字和图形对代码进行注释和描述的能力,使其成为展示和解释算法的完美工具,以及学习的绝佳工具。

要启动notebook,需要启动Juypter-notebook程序,然后打开浏览器,导航到http://localhost:8888(如图1-4所示)。

图 1-4

请注意,一个Jupyter Notebook页面由被称为单元格的不同的块组成。