NumPy攻略:Python科学计算与数据分析(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-21 07:07:26

点击下载

作者:Ivan Idris

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

NumPy攻略:Python科学计算与数据分析

NumPy攻略:Python科学计算与数据分析试读:

前言

作为NumPy的使用者,我们正生活在一个令人兴奋的时代。每周甚至每天,似乎都有新的NumPy相关的开发进展引起我们的关注。就在本书写作期间,NumFOCUS基金会(NumPy Foundation of Open Code for Usable Science)成立了,基于LLVM框架并且支持NumPy的动态Python编译器项目Numba宣告启动,谷歌公司在其云计算产品Google App Engine中也增加了对NumPy的支持。

我们预计,NumPy将会改进对GPU和CPU集群的并发性支持,类似OLAP的查询操作也将有可能支持NumPy数组类型的使用。

这是一个好消息。不过我们也要意识到,在Python科学软件生态系统中,NumPy只是其中一员。除了NumPy,还有SciPy、Matplotlib(一个非常有用的Python绘图库)、IPython(一个交互式Shell)和Scikits等。在Python生态系统之外,诸如R、C和Fortran等编程语言也非常流行。我们将会讨论与这些编程环境交换数据的细节。本书内容

第1章“使用IPython”介绍了IPython的使用。IPython是一个工具集合,因为它的Shell而为人所知。基于Web的notebook是个令人兴奋的新特性,我们将会对此做详细介绍。在Matlab和Mathematica软件中都有类似的notebook界面,但在IPython中我们是在浏览器里使用一个开源且免费的notebook。

第2章“高级索引和数组概念”介绍了NumPy中高级而巧妙的索引技术。由于使用了性能优异的索引技术,NumPy中的数组类型的实现非常高效,并且易于使用。

第3章“常用函数”对每一位NumPy使用者都应该知道的最基本的函数进行了介绍。NumPy中包含的函数太多了,不可能在本书中一一提及。

第4章“NumPy与其他软件的交互”。在实际工作中,我们需要用到各种编程语言、库文件和工具软件,数量多得惊人。一些软件运行在云端,另一些运行在本机或者远程服务器上。知道怎样在这样的软件环境中使用NumPy是十分重要的,其重要性不亚于能够编写独立运行的NumPy程序。

第5章“声音和图像处理”让你从一个不同的视角看待NumPy。看过本章内容后,当你想到NumPy时,很可能同时联想到声音和图像。

第6章“特殊类型数组与通用函数”探讨特殊类型数组和通用函数等话题。这将有助于我们学习怎样进行字符串操作、忽略不合法的数值和存储异构数据。

第7章“性能分析与调试”将介绍几个实用的性能分析和调试工具,它们是编写优秀的应用软件所必需的工具。

第8章“质量保证”将讨论单元测试、模拟和BDD等常用方法与技术,还会介绍NumPy中的测试工具,因为质量保证值得我们密切关注。

第9章“用Cython为代码提速”从NumPy的视角展示了Cython是怎样工作的。Cython试图把C语言的速度优势和Python的强大功能结合起来。

第10章“有趣的Scikits”对几个最有用的Scikits项目作了简明的介绍。Scikits同样属于令人着迷的Python科学计算生态系统。本书需要的资源

为了运行本书的范例程序,你需要有新近版本的NumPy,这意味着你也需要有支持该版本NumPy的Python版本。其他需要用到的软件包的安装方法会在书中介绍。本书读者

本书的目标读者是对Python和NumPy有基本了解,并且希望自己的水平能更上一层楼的科技工作者、工程师、程序员和分析师。此外,也需要读者对数学和统计学比较熟悉,或至少有点兴趣。排版约定

本书针对不同种类的信息,采用了不同的排版样式。下面是一些不同排版样式的例子及对应的说明。

正文中的代码文字会这样显示:“我们可以使用include指令将其他内容包括进来。”

代码段会这样显示:[default]exten => s,1,Dial(Zap/1|30)exten => s,2,Voicemail(u100)exten => s,102,Voicemail(b100)exten => i,1,Voicemail(s0)

当我们想让你关注代码段的特定部分时,相关的行或条目会加粗显示: [default] exten => s,1,Dial(Zap/1|30) exten => s,2,Voicemail(u100) exten => s,102,Voicemail(b100) exten => i,1,Voicemail(s0)

命令行输入或输出会这样显示:# cp /usr/src/asterisk-addons/configs/cdr_mysql.conf.sample /etc/asterisk/cdr_mysql.conf

新术语用楷体字显示。重要的英文文字会加粗显示。显示在屏幕上、菜单里或对话框中的文字在正文中出现时,会这样排版:“点击Next。按钮进入下一屏。”警告或重要的说明在这里显示。提示和小技巧在这里显示。读者反馈

我们很欢迎读者的反馈。请告诉我们你觉得本书怎么样,你喜欢哪些内容,不喜欢哪些内容。读者的反馈对于我们策划出版对读者真正有用的图书至关重要。

如果向我们提供一般的反馈,给feedback@packtpub.com这个邮箱发邮件即可。请在邮件的标题中指明相应的书名。

如果你擅长某类选题并且有兴趣写书或者参与书籍的撰稿工作,请访问www.packtpub.com/authors,看看我们的作者指南。客户支持

你现在是Packt出版社图书产品的尊敬用户,为使你的购买物超所值,我们会为你提供一些增值服务。

下载范例代码。

访问http://www.packtpub.com并登录账号,你可以下载到所有已购图书中的范例代码。如果你是在其他地方购买的本书,可以访问http://www.packtpub.com/support并进行注册,相关的范例代码会直接通过邮件发给你。

勘误。

尽管我们已经非常小心谨慎,尽力确保内容的准确性,但错误还是不可避免。如果你在书中发现了错误(可能是文字或者代码方面的错误),并向我们报告,我们将感激不尽。这样做,可以使其他读者免受这些错误的困扰,帮助改善该书的后续版本。如果你发现了任何错误,请访问http://www.packtpub.com/support,选择书名,点击“勘误提交表”链接,然后输入你所发现错误的详细内容。一旦你指出的错误被确认,你的提交就会被接受,勘误信息就会上传到我们的网站或添加到该书勘误区中已经存在的勘误列表中。

关于盗版行为。

对于各种媒体,互联网上受版权保护的材料都长期面临非法复制的问题。Packt非常重视版权保护和版权许可。如果你在网上看到Packt图书的任何形式的非法复制,请立即向我们提供网址信息,以便我们及时补救。

请通过copyright@packtpub.com联系我们,并提供疑似盗版材料的链接信息。

我们感谢你的帮助。这将保护我们作者的利益,也使我们有能力为你提供有价值的内容。

如果你有疑问。

如果你对本书有任何疑问,可以通过questions@packtpub.com联系我们,我们会尽力为你解答。第1章使用IPython

本章主要内容:● 安装IPython● 使用IPython的shell● 阅读手册页● 安装Matplotlib● 运行基于Web的notebook● 从notebook导出脚本和数据● 导入脚本和数据到notebook● 配置notebook服务器● 初探SymPy配置1.1 引言

IPython是一个免费、开源的项目,支持Linux、Unix、Mac OS X和Windows平台,其官方网址是http://ipython.org/。IPython的作者只要求你在用到IPython的科技著作中注明引用即可。IPython中包括各种组件,其中的两个主要组件是:● 基于终端方式和基于Qt的交互式Python shell● 支持多媒体和绘图功能的基于Web的notebook(版本号为0.12以上的IPython支持此功能)1

与IPython兼容的Python版本是2.5、2.6、2.7、3.1和3.2。1. IPython的较新版本已不支持Python 2.5。——译者注

不需要本地安装,你可以在云端尝试使用IPython,网址为http://www.pythonanywhere.com/try-ipython/。和本地安装的IPython相比,云端版本会稍有时延,使用体验稍逊,但已具备IPython交互式shell的绝大多数功能。在云端版本中还可使用vi/vim编辑器。如果你喜欢vi,这自然是个很棒的功能,你可以在IPython会话过程中保存和编辑文件。只有vi编辑器可用,对我来讲不是什么问题,我本人对Emacs之类的其他编辑器并不感兴趣。1.2 安装IPython

IPython有许多种安装方式,这主要和使用什么操作系统有关。基于终端的shell组件依赖于readline的存在,基于Web的notebook需要用到tornado和zmq。

除了安装IPython,我们还需要安装setuptools,其中包含了easy_install命令。easy_install是Python默认的标准化的包管理器。easy_install安装好之后,继续安装pip。pip和easy_install命令的功能类似,但增加了一些选项,例如卸载。1.2.1 具体步骤

本节将介绍在Windows、Mac OS X和Linux环境中怎样安装IPython,怎样使用easy_install和pip安装IPython及其依赖文件,以及怎样直接用源文件安装。● 在Windows中安装IPython和setuptools。

在IPython的官网可以下载适用于Python 2和Python 3的二进制Windows安装文件。具体安装过程请参阅http://ipython.org/ipython-doc/stable/install/install.html#windows。

从https://pypi.python.org/pypi/setuptools#files获得setuptools的安装文件并完成安装。之后继续安装pip,具体步骤为:cd C:\Python27\scriptspython .\easy_install-27-script.py pip● 在Mac OS X中安装IPython。

如有必要,请先安装苹果开发工具Xcode,可以在Mac电脑附带的OSX DVD光盘中或者苹果应用商店中找到Xcode。按照本节后面的说明,使用easy_install或pip安装IPython,或者从源文件安装。● 在Linux中安装IPython。

Linux的发行版本众多,恕不能一一列举。● Debian版本的安装命令如下: su – aptitude install ipython python-setuptools● Fedora版本的安装命令如下:su – yum install ipython python-setuptools-devel ● Gentoo版本的安装命令如下:su – emerge ipython ● Ubuntu版本的安装命令如下:sudo apt-get install ipython python-setuptools ● 使用easy_install或pip安装IPython。

使用easy_install安装IPython和本章中各种攻略所需要的依赖文件,使用以下命令:easy_install ipython pyzmq tornado readline

或者你可以先用easy_install安装pip,在终端界面中键入以下命令:easy_install pip

之后使用pip安装IPython,命令如下:sudo pip install ipython pyzmq tornado readline ● 从源文件安装。

如果你想使用最新的开发版本,从源文件安装是最适合的。1. 从https://github.com/ipython/ipython/downloads下载最新的压缩包。2. 对下载的文件解压缩,获得源文件:tar xzf ipython-.tar.gz 3. 如果你已经安装了Git,也可以通过克隆Git版本仓库的方式获得源文件:$ git clone https://github.com/ipython/ipython.git 4. 进入ipython目录:cd ipython 5. 运行安装脚本。你可能需要使用sudo运行此脚本,命令如下:sudo setup.py install 1.2.2 攻略小结

本节介绍了安装IPython的各种方法。大多数方法安装的是最新的稳定版本。如果选择从源文件安装,你安装的就是最新的开发版本。1.3 使用IPython的shell

科学家和工程师习惯于做各种实验。正是一些总有实验想法的科学家编写了IPython。IPython提供的交互式实验环境,使其具备了与Matlab、Mathematica、Maple和R类似的使用体验。

IPython的shell具有以下特性。● 代码补全● 历史记录机制● 嵌入式编辑● 使用%run调用外部Python脚本的能力● 访问系统命令● pylab选项开关● 访问Python的调试器和性能分析器1.3.1 具体步骤

本节具体介绍怎样使用IPython的shell。● pylab选项开关。使用pylab选项开关可以自动引入SciPy、NumPy和Matplotlib软件包。如果不使用这个选项开关,就需要自己引入这些软件包。

我们只需要在命令行输入以下指令:$ ipython -pylabType "copyright", "credits" or "license" for more information.IPython 0.12 -- An enhanced Interactive Python.? -> Introduction and overview of IPython's features.%quickref -> Quick reference.help -> Python's own help system.object? -> Details about 'object', use 'object??' for extra details.Welcome to pylab, a matplotlib-based Python environment [backend: MacOSX].For more information, type 'help(pylab)'.In [1]: quit()quit() or Ctrl + D quits the IPython shell.● 保存会话。

我们也许需要回溯做过的实验。要在IPython中保存会话以供将来使用,只需输入以下命令:In [1]: %logstartActivating auto-logging. Current session state plus future input saved.Filename : ipython_log.pyMode : rotateOutput logging : FalseRaw input log : FalseTimestamping : FalseState : active

关闭日志记录的命令如下:In [9]: %logoffSwitching logging OFF● 执行系统shell命令。

在使用默认设置的IPython环境中执行系统shell命令时,要在系统命令前加!前缀。例如,以下输入将获得当前日期:In [1]: !date

实际上,以!为前缀的任何内容都被发送到了系统shell。命令执行后的输出结果也可以进行保存,如下所示:In [2]: thedate = !dateIn [3]: thedate● 显示历史记录。

使用%hist命令,可以显示命令的历史记录,例如:In [1]: a = 2 + 2In [2]: aOut[2]: 4In [3]: %hista = 2 + 2a%hist

这是命令行接口(CLI)环境的一个常见特性。使用-g选项可以实现对历史记录的搜索:In [5]: %hist -g a = 2 1: a = 2 + 2下载范例代码。访问http://www.packtpub.com并登录账号,可以下载到所有已购图书中的范例代码。如果你是在其他地方购买的本书,可以访问http://www.packtpub.com/support并进行注册,相关的范例代码会直接用电子邮件发给你。1.3.2 攻略小结

我们看到了若干Magic函数(所谓的“魔法函数”)的实际运用。这些函数以%字符开始。如果Magic函数只用作单行命令,可以选择省略%。1.4 阅读手册页

进入IPython的pylab模式后,可以使用help命令查看NumPy中各种函数的手册页。不需要记住函数的完整名称,只需键入开头的几个字符,然后使用tab键自动补全函数名。作为示例,让我们看看arange函数的手册页有什么信息。1.4.1 具体步骤

浏览可获得的信息,有以下两种方法。● 调用help函数。

使用help命令,键入函数名的前面几个字符,然后按tab键:In [1]: help ararange arcsin arctan2 argmin around array_equal array_splitarccos arcsinh arctanh argsort array array_equiv array_strarccosh arctan argmax argwhere array2string array_repr arrow● 使用问号查询。

另一种方法是在函数名后面添加一个问号。你需要知道函数的完整名称,但不再需要键入help了。In [3]: arange?1.4.2 攻略小结

代码补全功能依赖于readline,你要确信已经安装了readline。使用问号查询方式,你看到的是docstrings中的信息。1.5 安装Matplotlib

Matplotlib是一个非常有用的绘图库,下一篇攻略就将用到它。Matplotlib依赖于NumPy的存在,但十有八九你已安装了NumPy。具体步骤

本节将介绍怎样在Windows、Linux和Mac环境中安装Matplotlib,以及怎样从源文件安装。● 在Windows环境中安装Matplotlib。

可以使用Enthought发行版进行安装,详见http://www.enthought.com/products/epd.php。

可能需要把msvcp71.dll文件放到C:\Windows\system32目录下。可以访问http://www.dll-files.com/dllindex/dll-files.shtml?msvcp71下载这个dll文件。● 在Linux环境中安装Matplotlib。

让我们看看怎样在各种Linux发行版本中安装Matplotlib。● Debian和Ubuntu版本的安装命令如下:sudo apt-get install python-matplotlib ● Fedora/Redhat版本的安装命令如下:su - yum install python-matplotlib ● 从源文件安装。

从Sourceforge(http://sourceforge.net/projects/matplotlib/files/)下载最新的tar.gz格式的源文件,或者使用如下命令直接从Git版本仓库下载。git clone git://github.com/matplotlib/matplotlib.git

下载完毕后,像往常一样使用如下命令构建和安装Matplotlib:cd matplotlibpython setup.py install● 在Mac环境中安装Matplotlib。

从http://sourceforge.net/projects/matplotlib/files/matplotlib/获取最新的DMG文件并进行安装。1.6 运行基于Web的notebook

新近的IPython版本增加了一个令人兴奋的新特性——基于Web的notebook。一个被称为notebook服务器的程序可以通过Web方式提供notebook界面。现在我们可以启动一个notebook服务器,获得一个基于Web的IPython运行环境。notebook除了具备常规IPython环境中的大多数特性,还包括以下新特性。● 显示图像和嵌入式图表● 在文本单元格中使用HTML和Markdown● notebook的导入和导出1.6.1 准备工作

首先要确保已经安装了所有必需的软件。notebook依赖于tornado和zmq的存在。具体请参见1.2节。1.6.2 具体步骤● 运行notebook。

键入如下命令,启动一个notebook。$ ipython notebook[NotebookApp] Using existing profile dir: u'/Users/ivanidris/.ipython/profile_default'[NotebookApp] The IPython Notebook is running at: http://127.0.0.1:8888[NotebookApp] Use Control-C to stop this server and shut down all kernels.

如你所见,我们用的是默认配置。notebook服务器运行在本地主机的8888端口。本章后续会介绍怎么修改这些默认的设置。notebook会在本机的默认浏览器中打开,也可以配置使用其他浏览器。

IPython会列出当前目录下所有的notebook文件。上图显示,当面目录下没有notebook文件。使用快捷键Ctrl+C可以停止notebook服务器的运行。● 用pylab模式运行notebook。

用pylab模式运行notebook,使用如下命令:$ ipython notebook --pylab

这样可以自动加载SciPy、NumPy和Matplotlib模块。● 运行notebook时使用嵌入式图表。

使用inline指令可以在notebook的单元格中显示嵌入式图表,命令如下。$ ipython notebook --pylab inline● 创建一个notebook文件。

点击New Notebook。按钮,创建一个新的notebook文件。● 创建一个数组。

使用arange函数创建一个数组。键入如下命令并按下Shift+Enter键。

键入如下命令并按下Shift+Enter键,可以在Out[2]。单元格中看到输出结果。● 绘制sinc函数。

把数组a作为sinc函数的参数,其结果图示如下:1.6.3 攻略小结

使用inline选项,Matplotlib绘制的图表将直接显示在输出单元格中。结合使用pylab模式,就不需要手动引入SciPy、NumPy和Matplotlib模块。1.6.4 参考阅读● 1.2节“安装IPython”1.7 导出基于Web的notebook

有时你需要和朋友或同事交换notebook中的内容。基于Web的notebook提供了几种导出数据的方法。具体步骤

notebook的导出方式有以下几种:● 打印选项。

Print。按钮并不是真的用来打印notebook中的内容,而是允许你以PDF或HTML文档的形式输出notebook的内容。● 下载notebook。

使用Download。按钮,可以下载notebook中的内容到指定位置。可以指定下载内容的保存格式为.py文件(常规的Python程序)或者.ipynb文件(JSON格式)。把前一篇攻略中创建的notebook导出为.ipynb文件后,其内容如下所示:{ "metadata": { "name": "Untitled1" }, "nbformat": 2, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "plot(sinc(a))" ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 3, "text": [ "[<matplotlib.lines.Line2D at 0x103d9c690>]" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXk AAAD9CAYAAABZVQdHAAAABHNCSVQICAgIf... mgkAAAAASUVORK5CYII=\n" } ], "prompt_number": 3 } ] } ]} 简明起见,上面这个文件的部分内容已被省略。该文件不是用来编辑或阅读的,但如果忽略其中表示图像的部分,还是很容易读懂的。更多有关JSON的信息请参见https://en.wikipedia.org/wiki/JSON。● 保存notebook。

使用Save。按钮,notebook的内容将自动导出到一个JSON格式的.ipynb文件中。该文件会被存储到你启动IPython的目录。1.8 导入基于Web的notebook

Python脚本可以导入到基于Web的notebook中,以前导出的notebook文件显然也可以导入到当前的notebook中。具体步骤

把Python脚本导入到notebook中的步骤如下。1. 把Python脚本从文件资源管理器(Explorer或Finder)拖曳到notebook界面上。vectorsum.py文件(NumPy Beginner's Guide。中的例程)被拖曳到notebook界面后的屏幕截图如下所示:2. 点击Upload按钮导入该脚本程序。如下图所示,IPython可以很好地完成导入工作,但不幸的是所有的代码都被放置在了一个单元格中,至少在本书写作的时候还是这样的状况。3. 给脚本添加标签,使其能显示在多个单元格中。为了能把代码分开放置到多个单元格中,需要使用特别的标签。这些标签实际上是Python的注释,看上去有点像XML标签。需要在代码的起始位置添加如下标签:# 2 1

该标签指明了notebook标签格式的版本号。每个新的代码单元都用如下标签进行标记:# 1. 较新版本的notbook使用的版本号是3,版本号为2的脚本可以被自动转换为最新版本。——译者注

标记后的代码如下所示:# 2#!/usr/bin/env/pythonfrom datetime import datetimeimport numpy"""NumPy Beginner's Guide第1章例程本程序演示了在Python中怎样实现向量的加法。在命令行界面中运行如下命令python vectorsum.py nn是整数,表示向量的长度。第1个向量中放的是0到n的平方。 第2个向量中放的是0到n的立方。 程序会显示加法运算结果中的最后2个向量元素和该计算过程所耗费的时间。 """def numpysum(n): a = numpy.arange(n) ** 2 b = numpy.arange(n) ** 3 c = a + b return cdef pythonsum(n): a = range(n) b = range(n) c = [] for i in range(len(a)): a[i] = i ** 2 b[i] = i ** 3 c.append(a[i] + b[i]) return c# size = int(50)# start = datetime.now()c = pythonsum(size)delta = datetime.now() - startprint "The last 2 elements of the sum", c[-2:]print "PythonSum elapsed time in microseconds", delta.microseconds# start = datetime.now()c = numpysum(size)delta = datetime.now() - startprint "The last 2 elements of the sum", c[-2:]print "NumPySum elapsed time in microseconds", delta.microseconds

依据标签所在的位置,代码被分解到了多个单元格中,如下图所示。1.9 配置notebook服务器

需要考虑位于公共域中的notebook服务器的安全性。为此,需要设置密码和使用SSL证书来建立连接。我们需要用证书实现基于https的安全通信。更多相关信息请见 https://en.wikipedia.org/wiki/Transport_Layer_Security。1.9.1 具体步骤

下述步骤介绍了怎样配置安全的notebook服务器。1. 生成密码。可以在IPython环境中生成一个密码。启动一个新的IPython会话,键入如下命令:In [1]: from IPython.lib import passwdIn [2]: passwd()Enter password: Verify password: Out[2]: 'sha1:0e422dfccef2:84cfbcb b3ef95872fb8e23be3999c123f862d856' 输入第二行命令后,系统会提示你输入密码。你需要记住这个密码。之后会输出一个长字符串。复制该字符串,后面我们要用到它。2. 创建SSL证书。为了能创建SSL证书,你需要让openssl命令位于可访问路径中。openssl命令行工具的设置过程不算太复杂,但可能有一些棘手的细节。遗憾的是,这些内容超出了本书的范围,好在网上有很多教程可以为你提供帮助。执行如下命令,生成一个文件名为mycert.pem的证书:$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pemGenerating a 1024 bit RSA private key......++++++........................++++++writing new private key to 'mycert.pem'-----You are about to be asked to enter information that will be incorporated into your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:State or Province Name (full name) [Some-State]:Locality Name (eg, city) []:Organization Name (eg, company) [Internet Widgits Pty Ltd]:Organizational Unit Name (eg, section) []:Common Name (eg, YOUR name) []:Email Address []:openssl会提示你在一些区域里填写内容,请参阅相关的手册页了解更多信息。3. 创建一个服务器配置。使用如下命令为服务器创建一个专用的配置:ipython profile create nbserver4. 编辑配置文件。对配置文件进行编辑。在本例中,配置文件所在的位置是~/.ipython/profile_nbserver/ipython_notebook_config.py。这个配置文件包括很多行内容,这里就不列出了。我们至少需要修改如下几行内容:c.NotebookApp.certfile = u'/absolute/path/to/your/certificate'c.NotebookApp.password = u'sha1:b...your password'c.NotebookApp.port = 9999 注意我们做的改动是,把证书位置指向了我们刚才创建的SSL证书,设置了密码,并且把端口号改为9999。5. 启动服务器。使用如下命令启动服务器,检查所做的修改是否已生效。ipython notebook --profile=nbserver[NotebookApp] Using existing profile dir: u'/Users/ivanidris/.ipython/profile_nbserver'[NotebookApp] The IPython Notebook is running at:https://127.0.0.1:9999[NotebookApp] Use Control-C to stop this server and shut down all kernels.服务器已运行在9999端口,你需要使用https方式连接到该服务器。如果一切顺利,我们会看到一个登录页面。你很可能还需要接受浏览器发来的一个安全例外警告。1.9.2 攻略小结

我们为公共域服务器创建了一个专用的配置。IPython中已有一些配置样本存在,例如默认配置。创建配置时,会在.ipython目录下添加一个profile_文件夹,文件夹中包括配置文件等内容。通过使用--profile=命令行选项,可以加载指定的配置。用如下命令可以列出已经存在的配置。ipython profile listAvailable profiles in IPython: cluster math pysh python3 The first request for a bundled profile will copy it into your IPython directory (/Users/ivanidris/.ipython), where you can customize it.Available profiles in /Users/ivanidris/.ipython: default nbserver sh 1.10 初探SymPy配置

IPython中包含一个SymPy配置的样本。SymPy是一个Python的符号计算库。例如,我们可以利用SymPy来化简代数表达式或做微分运算,其功能类似于Mathematica和Maple。显然SymPy是一个有趣的软件,但它不是我们学习NumPy的过程中必须要了解的内容。可以认为本节是一个可选的、有奖励性质的攻略。就像餐后甜点一样,你可以放心地跳过本节,虽然这样做有可能让你错过本章最美妙的一段内容。1.10.1 准备工作

使用easy_install或pip安装SymPy:easy_install sympysudo pip install sympy1.10.2 具体步骤1. 浏览配置文件,其所在位置是~/.ipython/profile_sympy/ipython_config.py。具体内容如下。c = get_config()app = c.InteractiveShellApp# This can be used at any point in a config file to load a sub config# and merge it into the current one.load_subconfig('ipython_config.py', profile='default')lines = """from __future__ import divisionfrom sympy import *x, y, z, t = symbols('x y z t')k, m, n = symbols('k m n', integer=True)f, g, h = symbols('f g h', cls=Function)"""# You have to make sure that attributes that are containers already# exist before using them. Simple assigning a new list will override# all previous values.if hasattr(app, 'exec_lines'): app.exec_lines.append(lines)else: app.exec_lines = [lines]# Load the sympy_printing extension to enable nice printing of sympy expr's.if hasattr(app, 'extensions'): app.extensions.append('sympyprinting')else: app.extensions = ['sympyprinting']上面这段代码实现的功能是:• 加载默认配置• 导入SymPy包• 定义符号2. 使用SymPy配置选项启动IPython,命令如下。ipython --profile=sympy3. 使用下图所示命令,展开一个代数表达式。第2章高级索引和数组概念

本章主要内容:● 安装SciPy● 安装PIL● 调整图像大小● 对比视图和副本● 翻转图像● 高级索引● 位置列表型索引● 布尔型索引● 数独游戏中的跨度技巧● 用广播机制扩展数组2.1 引言

NumPy以高效率的数组著称。这个美誉要部分归因于索引的易用性。我们将以图像处理为例展示高级的索引技巧。在深入研究索引之前,我们要先安装必需的软件——SciPy和PIL。在本书的官网http://www.packtpub.com上,可以找到本章中攻略的源代码。你也可以访问http://www.packtpub.com/support并进行注册,相关的文件会直接用电子邮件发给你。

本章中的一些实例涉及图像处理。为此,我们需要用到Python图像库(PIL)。 不用着急,本章后续部分会适时给出指导和建议,帮助你安装PIL和其他需要的Python软件。2.2 安装SciPy

SciPy是一个和NumPy密切相关的Python科学计算库。实际上,很多年前,SciPy和NumPy归属于同一个项目。本节将介绍怎样安装SciPy。2.2.1 准备工作

在第1章的1.2一节,我们介绍了怎样安装setuptools和pip。如有必要,请再次阅读该攻略。2.2.2 具体步骤

下面介绍安装SciPy的具体步骤。● 从源文件安装。

如果已经安装了Git,可以使用如下命令复制SciPy的版本库:git clone https://github.com/scipy/scipy.git python setup.py buildpython setup.py install --user

上面这两条命令把SciPy安装到了你的用户目录,要求Python的版本不低于2.6。

构建安装文件之前,你还需要安装以下依赖包:● BLAS和LAPACK库● C和Fortran编译器

作为NumPy安装文件的一部分,你有可能已经安装好这些软件了。● 在Linux环境中安装SciPy。

大多数Linux发行版都有SciPy安装包。我们将针对几个流行的Linux发行版,介绍必要的安装步骤。● 在Red Hat、Fedora和CentOS中安装SciPy,需要在命令行界面中运行如下命令:yum install python-scipy● 在Mandriva中安装SciPy,需要运行如下命令行指令:urpmi python-scipy● 在Gentoo中安装SciPy,需要运行如下命令行指令:sudo emerge scipy● 在Debian或Ubuntu中安装时,需要键入如下命令:sudo apt-get install python-scipy● 在Mac OS X环境中安装SciPy。

需要用到苹果开发工具Xcode,因为其中包含了BLAS和LAPACK库。可以在苹果应用商店或者Mac电脑附带的DVD安装光盘中找到Xcode,还可以访问苹果开发者网站的 https://developer.apple.com/technologies/tools/页面获取最新版本。要确保Xcode中所有的可选包都已安装。

你可能在安装NumPy的时候已经安装好了Fortran编译器。在http://r.research.att.com/tools/中可以找到gfortran的二进制安装文件。● 使用easy_install或pip安装SciPy。

使用如下两条命令之一完成安装。sudo pip install scipyeasy_install scipy● 在Windows环境中安装。

如果你已经安装了Python,推荐的安装方法是下载和使用二进制的SciPy安装文件。另一种选择是安装Enthought公司的Python发行版,里面包括了SciPy在内的多种Python科学计算软件包。● 检查安装情况。

使用如下代码,检查SciPy的安装情况:import scipyprint scipy.__version__print scipy.__file__

这将显示正确的SciPy版本号。2.2.3 攻略小结

大多数包管理器会替你处理各种依赖关系。但有些时候,你需要手动安装这些依赖文件。很遗憾,这些内容超出了本书的讨论范围。如果你碰到了问题,可以到下面两个地方寻求帮助:● freenode的#scipy IRC频道● 位于http://www.scipy.org/Mailing_Lists的SciPy邮件列表2.3 安装PIL

PIL是Python的图像库。本章后续和图像处理有关的攻略都要用到它,因此需要提前准备好。具体步骤

让我们看看怎样安装PIL。● 在Windows中安装PIL。

从PIL的官网http://www.pythonware.com/products/pil/下载Windows版本的可执行安装文件,并完成安装。● 在Debian或Ubuntu中安装。

在Debian或Ubuntu中,使用如下命令安装PIL。sudo apt-get install python-imaging● 使用easy_install或pip安装。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载