Python中文网

图灵程序设计丛书·Python数据分析基础教程:NumPy学习指南(第2版) [NumPy beginner’s guide,second edition]这本书,是由人民邮电出版社在2014-01-01月出版的,本书著作者是 [印尼] Ivan Idris 著,张驭宇 译,此次本版是第2次印刷发行, 国际标准书号(ISBN):9787115339409,品牌为人民邮电出版社, 这本书的包装是16开平装,所用纸张为胶版纸,全书共有226页字数万字, 是一本非常不错的Python编程书籍。

此书内容摘要

《图灵程序设计丛书;Python数据分析基础教程:NumPy学习指南(第2版)》是NumPy的入门教程,主要介绍NumPy以及相关的Python科学计算库,如SciPy和Matplotlib。《图灵程序设计丛书;Python数据分析基础教程:NumPy学习指南(第2版)》内容涵盖NumPy安装、数组对象、常用函数、矩阵运算、线性代数、金融函数、窗函数、质量控制、Matplotlib绘图、SciPy简介以及Pygame等内容,涉及面较广。另外,IvanIdris针对每个知识点给出了简短而明晰的示例,并为大部分示例给出了实用场景(如股票数据分析),在帮助初学者入门的同时,提高了本书可读性。
《图灵程序设计丛书;Python数据分析基础教程:NumPy学习指南(第2版)》适合正在找寻高质量开源计算库的科学家、工程师、程序员和定量管理分析师阅读参考。

关于此书作者

Ivan Idris,实验物理学硕士,曾在多家公司从事Java开发、数据仓库开发和软件测试的工作,主要关注商务智能、大数据和云计算。Ivan喜欢写简洁的可测试代码,并乐于撰写有趣的技术文章,另著有《NumPy攻略:Python科学计算与数据分析》和Instant Pygame for Python Game Development How-to。

编辑们的推荐

罕见的NumPy中文入门教程,Python数据分析优选从基础的知识讲起,手把手带你进入大数据挖掘领域囊括大量具有启发性与实用价值的实战案例。

图灵程序设计丛书·Python数据分析基础教程:NumPy学习指南(第2版) [NumPy beginner’s guide,second edition]图书的目录

第1章NumPy快速入门
1.1 Python
1.2 动手实践:在不同的操作系统上安装Python
1.3 Windows
1.4 动手实践:在Windows上安装NumPy、Matplotlib、SciPy和IPython
1.5 Linux
1.6 动手实践:在Linux上安装NumPy、Matplotlib、SciPy和IPython
1.7 Mac OS X
1.8 动手实践:在Mac OS X上安装NumPy、Matplotlib和SciPy
1.9 动手实践:使用MacPorts或Fink安装NumPy、SciPy、Matplotlib和IPython
1.10 编译源代码
1.11 数组对象
1.12 动手实践:向量加法
1.13 IPython:一个交互式shell工具
1.14 在线资源和帮助
1.15 本章小结


第2章NumPy基础
2.1 NumPy数组对象
2.2 动手实践:创建多维数组
2.2.1 选取数组元素
2.2.2 NumPy数据类型
2.2.3 数据类型对象
2.2.4 字符编码
2.2.5 自定义数据类型
2.2.6 dtype类的属性
2.3 动手实践:创建自定义数据类型
2.4 一维数组的索引和切片
2.5 动手实践:多维数组的切片和索引
2.6 动手实践:改变数组的维度
2.7 数组的组合
2.8 动手实践:组合数组
2.9 数组的分割
2.10 动手实践:分割数组
2.11 数组的属性
2.12 动手实践:数组的转换
2.13 本章小结


第3章常用函数
3.1 文件读写
3.2 动手实践:读写文件
3.3 CSV文件
3.4 动手实践:读入CSV文件
3.5 成交量加权平均价格(VWAP)
3.6 动手实践:计算成交量加权平均价格
3.6.1 算术平均值函数
3.6.2 时间加权平均价格
3.7 取值范围
3.8 动手实践:找到最大值和最小值
3.9 统计分析
3.10 动手实践:简单统计分析
3.11 股票收益率
3.12 动手实践:分析股票收益率
3.13 日期分析
3.14 动手实践:分析日期数据
3.15 周汇总
3.16 动手实践:汇总数据
3.17 真实波动幅度均值(ATR)
3.18 动手实践:计算真实波动幅度均值
3.19 简单移动平均线
3.20 动手实践:计算简单移动平均线
3.21 指数移动平均线
3.22 动手实践:计算指数移动平均线
3.23 布林带
3.24 动手实践:绘制布林带
3.25 线性模型
3.26 动手实践:用线性模型预测价格
3.27 趋势线
3.28 动手实践:绘制趋势线
3.29 ndarray对象的方法
3.30 动手实践:数组的修剪和压缩
3.31 阶乘
3.32 动手实践:计算阶乘
3.33 本章小结


第4章便捷函数
4.1 相关性
4.2 动手实践:股票相关性分析
4.3 多项式
4.4 动手实践:多项式拟合
4.5 净额成交量
4.6 动手实践:计算OBV
4.7 交易过程模拟
4.8 动手实践:避免使用循环
4.9 数据平滑
4.10 动手实践:使用hanning函数平滑数据
4.11 本章小结


第5章矩阵和通用函数
5.1 矩阵
5.2 动手实践:创建矩阵
5.3 从已有矩阵创建新矩阵
5.4 动手实践:从已有矩阵创建新矩阵
5.5 通用函数
5.6 动手实践:创建通用函数
5.7 通用函数的方法
5.8 动手实践:在add上调用通用函数的方法
5.9 算术运算
5.10 动手实践:数组的除法运算
5.11 模运算
5.12 动手实践:模运算
5.13 斐波那契数列
5.14 动手实践:计算斐波那契数列
5.15 利萨茹曲线
5.16 动手实践:绘制利萨茹曲线
5.17 方波
5.18 动手实践:绘制方波
5.19 锯齿波和三角波
5.20 动手实践:绘制锯齿波和三角波
5.21 位操作函数和比较函数
5.22 动手实践:玩转二进制位
5.23 本章小结


第6章深入学习NumPy模块

6.1 线性代数
6.2 动手实践:计算逆矩阵
6.3 求解线性方程组
6.4 动手实践:求解线性方程组
6.5 特征值和特征向量
6.6 动手实践:求解特征值和特征向量
6.7 奇异值分解
6.8 动手实践:分解矩阵
6.9 广义逆矩阵
6.10 动手实践:计算广义逆矩阵
6.11 行列式
6.12 动手实践:计算矩阵的行列式
6.13 快速傅里叶变换
6.14 动手实践:计算傅里叶变换
6.15 移频
6.16 动手实践:移频
6.17 随机数
6.18 动手实践:硬币赌博游戏
6.19 超几何分布
6.20 动手实践:模拟游戏秀节目
6.21 连续分布
6.22 动手实践:绘制正态分布
6.23 对数正态分布
6.24 动手实践:绘制对数正态分布
6.25 本章小结


第7章专用函数
7.1 排序
7.2 动手实践:按字典序排序
7.3 复数
7.4 动手实践:对复数进行排序
7.5 搜索
7.6 动手实践:使用searchsorted函数
7.7 数组元素抽取
7.8 动手实践:从数组中抽取元素
7.9 金融函数
7.10 动手实践:计算终值
7.11 现值
7.12 动手实践:计算现值
7.13 净现值
7.14 动手实践:计算净现值
7.15 内部收益率
7.16 动手实践:计算内部收益率
7.17 分期付款
7.18 动手实践:计算分期付款
7.19 付款期数
7.20 动手实践:计算付款期数
7.21 利率
7.22 动手实践:计算利率
7.23 窗函数
7.24 动手实践:绘制巴特利特窗
7.25 布莱克曼窗
7.26 动手实践:使用布莱克曼窗平滑股价数据
7.27 汉明窗
7.28 动手实践:绘制汉明窗
7.29 凯泽窗
7.30 动手实践:绘制凯泽窗
7.31 专用数学函数
7.32 动手实践:绘制修正的贝塞尔函数
7.33 sinc函数
7.34 动手实践:绘制sinc函数
7.35 本章小结


第8章质量控制
8.1 断言函数
8.2 动手实践:使用assert_almost_equal断言近似相等
8.3 近似相等
8.4 动手实践:使用assert_approx_equal断言近似相等
8.5 数组近似相等
8.6 动手实践:断言数组近似相等
8.7 数组相等
8.8 动手实践:比较数组
8.9 数组排序
8.10 动手实践:核对数组排序
8.11 对象比较
8.12 动手实践:比较对象
8.13 字符串比较
8.14 动手实践:比较字符串
8.15 浮点数比较
8.16 动手实践:使用assert_array_ almost_equal_nulp比较浮点数
8.17 多ULP的浮点数比较
8.18 动手实践:设置maxulp并比较浮点数
8.19 单元测试
8.20 动手实践:编写单元测试
8.21 nose和测试装饰器
8.22 动手实践:使用测试装饰器
8.23 文档字符串
8.24 动手实践:执行文档字符串测试
8.25 本章小结


第9章使用Matplotlib绘图
9.1 简单绘图
9.2 动手实践:绘制多项式函数
9.3 格式字符串
9.4 动手实践:绘制多项式函数及其导函数
9.5 子图
9.6 动手实践:绘制多项式函数及其导函数
9.7 财经
9.8 动手实践:绘制全年股票价格
9.9 直方图
9.10 动手实践:绘制股价分布直方图
9.11 对数坐标图
9.12 动手实践:绘制股票成交量
9.13 散点图
9.14 动手实践:绘制股票收益率和成交量变化的散点图
9.15 着色
9.16 动手实践:根据条件进行着色
9.17 图例和注释
9.18 动手实践:使用图例和注释
9.19 三维绘图
9.20 动手实践:在三维空间中绘图
9.21 等高线图
9.22 动手实践:绘制色彩填充的等高线图
9.23 动画
9.24 动手实践:制作动画
9.25 本章小结


第10章NumPy的扩展:SciPy
10.1 MATLAB和Octave
10.2 动手实践:保存和加载.mat文件
10.3 统计
10.4 动手实践:分析随机数
10.5 样本比对和SciKits
10.6 动手实践:比较股票对数收益率
10.7 信号处理
10.8 动手实践:检测QQQ股价的线性趋势
10.9 傅里叶分析
10.10 动手实践:对去除趋势后的信号进行滤波处理
10.11 数学优化
10.12 动手实践:拟合正弦波
10.13 数值积分
10.14 动手实践:计算高斯积分
10.15 插值
10.16 动手实践:一维插值
10.17 图像处理
10.18 动手实践:处理Lena图像
10.19 音频处理
10.20 动手实践:重复音频片段
10.21 本章小结


第11章玩转Pygame
11.1 Pygame
11.2 动手实践:安装Pygame
11.3 Hello World
11.4 动手实践:制作简单游戏
11.5 动画
11.6 动手实践:使用NumPy和Pygame制作动画对象
11.7 Matplotlib
11.8 动手实践:在Pygame中使用Matplotlib
11.9 屏幕像素
11.10 动手实践:访问屏幕像素
11.11 人工智能
11.12 动手实践:数据点聚类
11.13 OpenGL和Pygame
11.14 动手实践:绘制谢尔宾斯基地毯
11.15 模拟游戏
11.16 动手实践:模拟生命
11.17 本章小结
突击测验答案

部分内容试读

如今,科学家、工程师以及定量管理分析师面临着众多的挑战。数据科学家们希望能够用最小的编程代价在大数据集上进行数值分析,他们希望自己编写的代码可读性好、执行效率高、运行速度快,并尽可能地贴近他们熟悉的一系列数学概念。在科学计算领域,有很多符合这些要求的解决方案。

在这方面,C、C++和Fortran等编程语言各有优势,但它们不是交互式语言,并且被很多人认为过于复杂。常见的商业产品还有Matlab、Maple和Mathematica。这些产品提供了强大的脚本语言,但和通用编程语言比起来,功能依然很有限。另外还有一些类似于Matlab的开源工具,如R、GNU Octave和Scilab。显然,作为编程语言,它们都不如Python强大。

Python是一种流行的通用编程语言,在科学领域被广泛使用。你很容易在Python代码中调用以前的C、Fortran或者R代码。Python是面向对象语言,比C和Fortran更加高级。使用Python可以写出易读、整洁并且缺陷最少的代码。然而,Python本身并不具有与Matlab等效的功能块,而这恰恰就是NumPy存在的意义。本书就是要介绍NumPy以及相关的Python科学计算库,如SciPy和Matplotlib。

NumPy是什么

NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。如果你的系统中已经装有LAPACK,NumPy的线性代数模块会调用它,否则NumPy将使用自己实现的库函数。LAPACK是一个著名的数值计算库,最初是用Fortran写成的,Matlab同样也需要调用它。从某种意义上讲,NumPy可以取代Matlab和Mathematica的部分功能,并且允许用户进行快速的交互式原型设计。

在本书中,我们不会从程序开发者的角度来讨论NumPy,而是更多地立足于用户,从他们的角度来分析它。不过值得一提的是,NumPy是一个非常活跃的开源项目,拥有很多的贡献者,也许有一天你也能成为其中的一员!

NumPy的由来

NumPy的前身是Numeric。Numeric最早发布于1995年,如今已经废弃了。由于种种原因,不管是Numeric还是NumPy,都没能进入Python标准库,不过单独安装NumPy也很方便。关于NumPy的安装,我们将在第1章中详细介绍。

早在2001年,一些开发者受Numeric的启发共同开创了一个叫做SciPy的项目。SciPy是一个开源的Python科学计算库,提供了类似于Matlab、Maple和Mathematica的许多功能。那段时间,人们对于Numeric越来越不满。于是,Numarray作为Numeric的替代品问世了。Numarray在某些方面比Numeric更强大,但是它们的工作方式却截然不同。鉴于此,SciPy继续遵循Numeric的工作方式,并延续了对Numeric数组对象的支持。虽然人们总是倾向于使用“最新最好”的软件,但是Numarray依然催生出了一整套的系统,包括很多周边的实用工具软件。

2005年,SciPy的早期发起人之一Travis Oliphant决定改变这一状况,他开始将Numarray的一些特性整合到Numeric中。一整套的代码重构工作就此开始,并于2006年NumPy 1.0发布的时候全部完成。于是NumPy拥有了Numeric和Numarray的所有特性,并且还新增了一些功能。SciPy提供了一个升级工具,可以让用户方便地从Numeric和Numarray升级到NumPy。由于Numeric和Numarray均不再活跃更新,升级是必然的。

如上所述,最初的NumPy其实是SciPy的一部分,后来才从SciPy中分离出来。如今,SciPy在处理数组和矩阵时会调用NumPy。

为什么使用NumPy

对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多。这是因为NumPy能够直接对数组和矩阵进行操作,可以省略很多循环语句,其众多的数学函数也会让编写代码的工作轻松许多。NumPy的底层算法在设计时就有着优异的性能,并且经受住了时间的考验。

NumPy中数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构(如嵌套的list容器)。其能够提升的性能是与数组中元素的数目成比例的。对于大型数组的运算,使用NumPy的确很有优势。对于TB级的大文件,NumPy使用内存映射文件来处理,以达到最优的数据读写性能。不过,NumPy数组的通用性不及Python提供的list容器,这是其不足之处。因此在科学计算之外的领域,NumPy的优势也就不那么明显了。关于NumPy数组的技术细节,我们将在后面详细讨论。

NumPy的大部分代码都是用C语言写成的,这使得NumPy比纯Python代码高效得多。NumPy同样支持C语言的API,并且允许在C源代码上做更多的功能拓展。C API的内容不在本书讨论之列。最后要记往一点,NumPy是开源的,这意味着使用NumPy可以享受到开源带来的所有益处。价格低到了极限——免费。你再也不用担心每次有新成员加入团队时,就要面对软件授权及更新的问题了。开源代码是向所有人开放的,对于代码质量而言这是非常有利的。

NumPy的局限性

如果你是Java程序员,可能会对Jython感兴趣。Jython是Python语言在Java中的完整实现。遗憾的是,Jython运行在Java虚拟机上,无法调用NumPy,因为大部分NumPy模块是用C语言实现的。Python和Jython可以说是完全不同的两个世界,尽管它们实现的是同一套语言规范。当然,仍然有一些变通方案,具体内容在本书作者的另一本著作《NumPy攻略》中有所讨论。

本书内容

第1章指导你在系统中安装NumPy,并创建一个基本的NumPy应用程序。

第2章介绍NumPy数组对象以及一些基础知识。

第3章教你使用NumPy中最常用的基本数学和统计分析函数。

第4章讲述如何便捷地使用NumPy,包括如何选取数组的某一部分(例如根据一组布尔值来选取)、多项式拟合,以及操纵NumPy对象的形态。

第5章涵盖了矩阵和通用函数的内容。矩阵在数学中使用广泛,在NumPy中也有专门的对象来表示。通用函数(ufuncs)是一个能用于NumPy对象的标量函数,该函数的输入为一组标量,并将生成一组标量作为输出。

第6章探讨通用函数的一些基本模块。通用函数通常可映射到对应的数学运算,如加、减、乘、除等。

第7章介绍NumPy中的一些专用函数。作为NumPy用户,我们时常发现自己有一些特殊的需求。幸运的是,NumPy能满足我们的大部分需求。

第8章介绍怎样编写NumPy的单元测试代码。

第9章深入介绍非常有用的Python绘图库Matplotlib。虽然NumPy本身不能用来绘图,但是Matplotlib和NumPy两者完美地结合在一起,其绘图能力可与Matlab相媲美。

第10章更详细地介绍SciPy。如前所述,SciPy和NumPy是有历史渊源的,SciPy是一套高端Python科学计算框架,可以与NumPy共同使用。

第11章是本书的“餐后甜点”,这一章介绍如何用NumPy和Pygame写出有趣的游戏。同时,我们也将从中“品尝”到人工智能的“滋味”。

阅读条件

要试验本书中的代码,你需要安装最新版NumPy,因此要先安装能够运行NumPy的任一版Python。本书部分示例代码采用Matplotlib进行绘图,这些代码不一定需要读者全部运行,但依然推荐安装Matplotlib。本书最后一章讲的是SciPy,会讨论一个使用SciKits的例子。

以下是开发及测试示例代码所需的软件:

Python 2.7

NumPy 2.0.0.dev20100915

SciPy 0.9.0.dev20100915

Matplotlib 1.1.1

Pygame 1.9.1

IPython 0.14.dev

当然,我并不是要你在计算机上装全这些软件或者必须装指定版本,但Python和NumPy是必须安装的。

读者对象

本书适合正在找寻高质量开源数学库的科学家、工程师、程序员和分析师阅读参考。读者应具备一些基本的Python编程知识。此外,读者应该是经常与数学和统计学打交道,或起码对它们感兴趣。

排版约定

本书会通过不同样式区别不同类型的内容。下面给出部分样式的示例及解释。

正文中的代码格式如此处所示:“注意numpysum()函数中没有使用for循环。”

代码段如下所示:

def numpysum(n):

a = numpy.arange(n) ** 2

b = numpy.arange(n) ** 3

c = a + b

return c

当我们希望你注意代码中的某一部分时,会将相关的行或项用粗体表示:

reals = np.isreal(xpoints)

print ""Real number?"" reals

Real number? [ True True True True False False False False ]

命令行输入输出如下所示:

>>>fromnumpy.testing import rundocs

>>>rundocs('docstringtest.py')

新术语和重要的名词将用楷体表示。你在屏幕、菜单或对话框中看到的文本会采用加粗样式:“单击Next按钮进入下一界面。”

警告或重要说明将写在这里。

小贴士和技巧将写在这里。

关于此书评价

“本书介绍了大量常用技术,对于我的研究工作来说是本很好的参考书。不过,它绝不止是一本简单的学习指南,因为Ivan Idris很明显在全面而建设性地发掘NumPy的各种功能。……本书还很好地探讨了信息的图形化表示,并用整章篇幅来介绍Matplotlib绘图,及如何生成常用图形以促进工作中的有效沟通。……读者只需具备简单的Python语法知识,便可快速掌握本书知识,结合使用NumPy及其他Python科学计算库提高工作效率。”

"本书文风简约而不失深度,深入浅出地讲解了NumPy的使用及相关知识。Ivan Idris不仅给出了大量示例及代码,而且为我们提供了丰富的趣味性练习。"

——读者评论

书摘内容

暂无.

图灵程序设计丛书·Python数据分析基础教程:NumPy学习指南(第2版) [NumPy beginner’s guide,second edition]最新最全的试读、书评、目录、简介信息由Python中文网整理提供。

上一篇:没有了

下一篇:Python王者归来