收藏 分享(赏)

Python数据分析基础教程:NumPy学习指南(第2版).pdf

上传人:jintaihu 文档编号:5709086 上传时间:2022-06-15 格式:PDF 页数:249 大小:5.54MB
下载 相关 举报
Python数据分析基础教程:NumPy学习指南(第2版).pdf_第1页
第1页 / 共249页
Python数据分析基础教程:NumPy学习指南(第2版).pdf_第2页
第2页 / 共249页
亲,该文档总共249页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、图灵社区会员 heruihong 专享 尊重版权图灵社区会员 heruihong 专享 尊重版权图灵社区会员 heruihong 专享 尊重版权图灵社区会员 heruihong 专享 尊重版权内 容 提 要本书是 NumPy 的入门教程,主要介绍 NumPy 以及相关的 Python 科学计算库,如 SciPy 和 Matplotlib。本书内容涵盖 NumPy 安装、数组对象、常用函数、矩阵运算、线性代数、金融函数、窗函数、质量控制、Matplotlib 绘图、SciPy 简介以及 Pygame 等内容,涉及面较广。另外,Ivan Idris 针对每个知识点给出了简短而明晰的示例,并为大部分

2、示例给出了实用场景(如股票数据分析) ,在帮助初学者入门的同时,提高了本书可读性。本书适合正在找寻高质量开源计算库的科学家、工程师、程序员和定量管理分析师阅读参考。定价:49.00元读者服务热线:(010)51095186转600印装质量热线:(010)81055316反盗版热线:(010)81055315广告经营许可证:京崇工商广字第 0021 号著印尼 Ivan Idris译张驭宇责任编辑毛倩倩执行编辑程芃责任印制焦志炜人民邮电出版社出版发行北京市丰台区成寿寺路11号邮编100164电子邮件网址http:/北京印刷开本:80010001/16印张:15.25 字数:371千字 2014年

3、1 月第 1 版印数:1 4 000册 2014年 1 月北京第 1 次印刷著作权合同登记号 图字:01-2013-5239号图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!错误!文档中没有指定样式的文字。错误!文档中没有指定样式的文字。 1 1 2 3 4 5 8 10 13 9 6 7 12 11 版 权 声 明 Copyright 2013 Packt Publishing. First published in the English language under

4、 the title NumPy Beginners Guide, Second Edition. Simplified Chinese-language edition copyright 2014 by Posts & Telecom Press. All rights reserved. 本书中文简体字版由Packt Publishing授权人民邮电出版社独家出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。 版权所有,侵权必究。 图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py

5、 t h o n 书籍!前 言 1 1 2 3 4 5 8 10 13 9 6 7 12 11 译 者 序 NumPy,即Numeric Python的缩写,是一个优秀的开源科学计算库,并已经成为Python科学计算生态系统的重要组成部分。NumPy为我们提供了丰富的数学函数、强大的多维数组对象以及优异的运算性能。尽管Python作为流行的编程语言非常灵活易用,但它本身并非为科学计算量身定做,在开发效率和执行效率上均不适合直接用于数据分析,尤其是大数据的分析和处理。幸运的是,NumPy为Python插上了翅膀,在保留Python语言优势的同时大大增强了科学计算和数据处理的能力。更重要的是,Nu

6、mPy与SciPy、Matplotlib、SciKits等其他众多Python科学计算库很好地结合在一起,共同构建了一个完整的科学计算生态系统。毫不夸张地讲,NumPy是使用Python进行数据分析的一个必备工具。 说起NumPy,我是在数据的“赛场”上与之结缘的。出于对数据挖掘和机器学习的爱好,我与中国科学院和北京大学的同学一起组建了一支名为BrickMover的“比赛小分队” ,队友包括庞亮、石磊、刘旭东、黎强、孙晗晓、刘璐等。我们先后参加了一些国内外的数据挖掘比赛,包括百度电影推荐系统算法创新大赛、首届中国计算广告学大赛暨RTB算法大赛、RecSys Challenge 2013、ICD

7、M Contest 2013等,并且取得了还算不错的成绩。无一例外的是,这些比赛均需要对数据进行快速、全面的分析。感谢NumPy,它正是我们使用的数据分析利器之一。 本书作为NumPy的入门教程,从安装NumPy讲起,涵盖NumPy数组对象、常用函数、矩阵运算、线性代数、金融函数、窗函数、质量控制、Matplotlib绘图、SciPy简介以及Pygame等内容,涉及面较为广泛。书中对每个知识点均给出了简短而明晰的示例,很适合初学者上手。大部分示例都有真实的应用场景(如股票数据分析) ,可读性远远好于枯燥的官方文档,帮助读者在掌握NumPy使用技能的同时拓宽视野、拓展思维。本书的阅读门槛不高,读

8、者只需具备基本的Python编程知识。 在翻译本书的过程中,我发现原作有不少地方不够严谨,甚至还有一些错误。经过反复核对确认, 我已经修改了发现的错误, 并在我认为不够严谨的地方以译者注的形式给出了自己的理解,供读者参考。此外,原书中的配图为屏幕截图,清晰度较低。为了读者获得最佳的阅读体验,我将书中的代码全部运行了一遍,并输出矢量图以替换原有的配图。需要说明的是,书中部分代码将会在线下载最近一年的股价数据,即数据的时间区段取决于代码运行时的日期。因此,这部分代码对应的新配图会与原书中的配图稍有差异,但对读者不会有任何影响。 图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t

9、 h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!2 译者序 感谢我的研究生导师王斌老师的力荐,他让我有幸成为本书的译者。王老师已有信息检索导论 大数据:大规模互联网数据挖掘与分布式处理 机器学习实战等诸多译著。他并不满足于自己畅读国外的优质书籍,而是字斟句酌、不辞辛劳地完成同样优质的译作与广大中文读者共飨,这份精神让我深受鼓舞。也正因为此,我才鼓起勇气接受了这次自我挑战,不遗余力地完成了人生第一次翻译工作。在这个过程中,要感谢图灵公司的李松峰老师对译稿提出细致严谨的修改意见,感谢傅志红、朱巍、毛倩倩、程芃等出版界同仁在审校、编辑阶段给予的帮

10、助。最后,感谢我的家人,以及BrickMover Team的小伙伴们对翻译本书的支持。 由于自己的专业水平和翻译能力十分有限,加上时间仓促,译稿中的疏漏之处在所难免,恳请读者谅解。 希望读者通过新浪微博张驭宇UCAS和个人邮箱, 不吝提出宝贵的修改意见和建议,共同努力不断完善译稿。 对于每一个期望快速了解NumPy,却又担心自己迷失在浩如烟海的官方文档中的人,这本书值得一读。 张驭宇 2013年11月于中关村 图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!2 前 言 献

11、给我的家人和朋友们。 图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!前 言 1 1 2 3 4 5 8 10 13 9 6 7 12 11 关于审稿人 Jaidev Deshpande是Enthought公司的一位实习生,他在那里主要做数据分析和数据可视化方面的工作。他是个狂热的科学计算程序员,在信号处理、数据分析和机器学习的很多开源项目中都有贡献。 Alexandre Devert博士在中国科学技术大学从事数据挖掘和软件工程的教学工作。他同时也是一位研究员,从事最优化

12、问题的研究,并在生物技术创业公司中研究数据挖掘问题。在所有这些工作中,Alexandre非常乐于使用Python、NumPy和SciPy。 Mark Livingstone曾为三家跨国计算机公司(如今已不复存在)工作,在工程、产品支持、编程和培训等部门任职。他厌倦了被裁员的遭遇。2011年,他从澳大利亚黄金海岸的Griffith大学毕业,获得信息技术学士学位。目前是他攻读信息技术荣誉学士学位的最后一个学期,研究的是蛋白质相关的算法。研究工作中用到的软件均是在Mac电脑上用Python写成的。他的导师以及整个研究小组都感受到了Python编程的乐趣。 Mark喜欢指导需要帮助的大一新生,他是Gr

13、iffith大学IEEE学生分会主席,也是Courthouse地区的太平绅士,曾经担任过信用合作社的主管,并将在2013年年底完成100次献血的计划。 他在业余时间也很多产, 曾与人合作开发了S2 Salstat Statistics Package (项目主页: http:/code. 。这是一个跨平台的统计工具包,其中用到了wxPython、NumPy、SciPy、SciKit、Matplotlib等许多Python模块。 Mikls Prisznyk是一位有自然科学背景的资深软件工程师。他毕业于匈牙利历史最悠久、规模最大的大学Etvs Lrnd大学,从事物理专业工作。他于1992年完成了

14、硕士论文,研究了非阿贝尔的晶格量子场论的蒙特卡罗仿真。在匈牙利物理研究中心工作三年后,他加入了布达佩斯的MultiRci Kft。 这家公司是由一群物理学家创办的, 专注于用数学方法分析数据和预测经济数据。在那里,他的主要项目是小区域内的失业统计分析系统,从那时候起,这一系统就一直被匈牙利政府用于公共就业服务。 2000年他开始学习Python编程。 2002年, 他创办了自己的咨询公司,将Python用于所有能用的项目,服务于各种各样的保险、医药和电子商务公司。他还曾在意大利 该项目主页已过期并迁移至SourceForge:http:/ 图灵社区会员 heruihong 专享 尊重版权欢迎加

15、入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!2 关于审稿人 的一家欧盟研究所工作,负责测试和优化基于Python的Zope/Plone分布式网络应用程序。2007年他移居英国,先是在一家苏格兰的创业公司工作,使用Twisted Python;随后在英国航天工业部门工作,使用PyQt窗口工具包、Enthought应用程序框架,以及NumPy和SciPy。2012年,他回到匈牙利并重新加入MultiRci,目前的工作主要涉及OpenOffice/EuroOffice上的Python扩展模块,并再次使用NumPy和SciPy来

16、让用户求解非线性问题和随机优化问题。Mikls喜欢旅行和阅读,他兴趣广泛,对自然科学、语言学、历史、政治、跳棋等均有涉猎。香浓的咖啡是他的最爱。不过,最美好的莫过于和他聪明的10岁大的儿子Zsombor一起享受时光。 Nikolay Karelin拥有光学博士学位,有近20年利用各种方法进行数值仿真和分析的经验,先后在学术界和工业界(从事光纤通信链路的仿真)工作。在初识Python和NumPy后,他在过去的五年内逐渐将这些优秀的工具用于几乎所有数值分析和脚本编写工作。 感谢我的家人,感谢他们在我审阅本书的一个个漫漫长夜所给予的理解与支持。 图灵社区会员 heruihong 专享 尊重版权欢迎加

17、入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!前 言 1 1 2 3 4 5 8 10 13 9 6 7 12 11 前 言 如今,科学家、工程师以及定量管理分析师面临着众多的挑战。数据科学家们希望能够用最小的编程代价在大数据集上进行数值分析,他们希望自己编写的代码可读性好、执行效率高、运行速度快,并尽可能地贴近他们熟悉的一系列数学概念。在科学计算领域,有很多符合这些要求的解决方案。 在这方面,C、C+和Fortran等编程语言各有优势,但它们不是交互式语言,并且被很多人认为过于复杂。常见的商业产品还有Matlab、Map

18、le和Mathematica。这些产品提供了强大的脚本语言,但和通用编程语言比起来,功能依然很有限。另外还有一些类似于Matlab的开源工具,如R、GNU Octave和Scilab。显然,作为编程语言,它们都不如Python强大。 Python是一种流行的通用编程语言,在科学领域被广泛使用。你很容易在Python代码中调用以前的C、Fortran或者R代码。Python是面向对象语言,比C和Fortran更加高级。使用Python可以写出易读、整洁并且缺陷最少的代码。然而,Python本身并不具有与Matlab等效的功能块,而这恰恰就是NumPy存在的意义。本书就是要介绍NumPy以及相关的

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

20、速的交互式原型设计。 在本书中,我们不会从程序开发者的角度来讨论NumPy,而是更多地立足于用户,从他们的角度来分析它。不过值得一提的是,NumPy是一个非常活跃的开源项目,拥有很多的贡献者,也许有一天你也能成为其中的一员! 图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!2 前 言 NumPy的由来 NumPy的前身是Numeric。Numeric最早发布于1995年,如今已经废弃了。由于种种原因,不管是Numeric还是NumPy, 都没能进入Python标准库, 不

21、过单独安装NumPy也很方便。 关于NumPy的安装,我们将在第1章中详细介绍。 早在2001年, 一些开发者受Numeric的启发共同开创了一个叫做SciPy的项目。 SciPy是一个开源的Python科学计算库,提供了类似于Matlab、Maple和Mathematica的许多功能。那段时间,人们对于Numeric越来越不满。于是,Numarray作为Numeric的替代品问世了。Numarray在某些方面比Numeric更强大,但是它们的工作方式却截然不同。鉴于此,SciPy继续遵循Numeric的工作方式,并延续了对Numeric数组对象的支持。虽然人们总是倾向于使用“最新最好”的软件

22、,但是Numarray依然催生出了一整套的系统,包括很多周边的实用工具软件。 2005年,SciPy的早期发起人之一Travis Oliphant决定改变这一状况,他开始将Numarray的一些特性整合到Numeric中。一整套的代码重构工作就此开始,并于2006年NumPy 1.0发布的时候全部完成。于是NumPy拥有了Numeric和Numarray的所有特性,并且还新增了一些功能。SciPy提供了一个升级工具,可以让用户方便地从Numeric和Numarray升级到NumPy。由于Numeric和Numarray均不再活跃更新,升级是必然的。 如上所述,最初的NumPy其实是SciPy的

23、一部分,后来才从SciPy中分离出来。如今,SciPy在处理数组和矩阵时会调用NumPy。 为什么使用NumPy 对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多。这是因为NumPy能够直接对数组和矩阵进行操作,可以省略很多循环语句,其众多的数学函数也会让编写代码的工作轻松许多。NumPy的底层算法在设计时就有着优异的性能,并且经受住了时间的考验。 NumPy中数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构 (如嵌套的list容器) 。其能够提升的性能是与数组中元素的数目成比例的。对于大型数组的运算,使用NumPy的确很有优势。对于TB级的大文

24、件,NumPy使用内存映射文件来处理,以达到最优的数据读写性能。不过,NumPy数组的通用性不及Python提供的list容器,这是其不足之处。因此在科学计算之外的领域,NumPy的优势也就不那么明显了。关于NumPy数组的技术细节,我们将在后面详细讨论。 NumPy的大部分代码都是用C语言写成的,这使得NumPy比纯Python代码高效得多。NumPy同样支持C语言的API,并且允许在C源代码上做更多的功能拓展。C API的内容不在本书讨论之图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t

25、 h o n 书籍!前 言 3 1 2 3 4 5 8 10 13 9 6 7 12 11 列。最后要记往一点,NumPy是开源的,这意味着使用NumPy可以享受到开源带来的所有益处。价格低到了极限免费。你再也不用担心每次有新成员加入团队时,就要面对软件授权及更新的问题了。开源代码是向所有人开放的,对于代码质量而言这是非常有利的。 NumPy的局限性 如果你是Java程序员,可能会对Jython感兴趣。Jython是Python语言在Java中的完整实现。遗憾的是,Jython运行在Java虚拟机上,无法调用NumPy,因为大部分NumPy模块是用C语言实现的。Python和Jython可以说

26、是完全不同的两个世界,尽管它们实现的是同一套语言规范。当然,仍然有一些变通方案,具体内容在本书作者的另一本著作NumPy攻略中有所讨论。 本书内容 第1章指导你在系统中安装NumPy,并创建一个基本的NumPy应用程序。 第2章介绍NumPy数组对象以及一些基础知识。 第3章教你使用NumPy中最常用的基本数学和统计分析函数。 第4章讲述如何便捷地使用NumPy,包括如何选取数组的某一部分(例如根据一组布尔值来选取) 、多项式拟合,以及操纵NumPy对象的形态。 第5章涵盖了矩阵和通用函数的内容。矩阵在数学中使用广泛,在NumPy中也有专门的对象来表示。通用函数(ufuncs)是一个能用于Nu

27、mPy对象的标量函数,该函数的输入为一组标量,并将生成一组标量作为输出。 第6章探讨通用函数的一些基本模块。通用函数通常可映射到对应的数学运算,如加、减、乘、除等。 第7章介绍NumPy中的一些专用函数。作为NumPy用户,我们时常发现自己有一些特殊的需求。幸运的是,NumPy能满足我们的大部分需求。 第8章介绍怎样编写NumPy的单元测试代码。 第9章深入介绍非常有用的Python绘图库Matplotlib。虽然NumPy本身不能用来绘图,但是Matplotlib和NumPy两者完美地结合在一起,其绘图能力可与Matlab相媲美。 第10章更详细地介绍SciPy。如前所述,SciPy和Num

28、Py是有历史渊源的,SciPy是一套高端Python科学计算框架,可以与NumPy共同使用。 图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!4 前 言 第11章是本书的“餐后甜点” ,这一章介绍如何用NumPy和Pygame写出有趣的游戏。同时,我们也将从中“品尝”到人工智能的“滋味” 。 阅读条件 要试验本书中的代码,你需要安装最新版NumPy,因此要先安装能够运行NumPy的任一版Python。本书部分示例代码采用Matplotlib进行绘图,这些代码不一定需要读者

29、全部运行,但依然推荐安装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编程知识。此外,读

30、者应该是经常与数学和统计学打交道,或起码对它们感兴趣。 排版约定 本书会通过不同样式区别不同类型的内容。下面给出部分样式的示例及解释。 正文中的代码格式如此处所示: “注意numpysum()函数中没有使用for循环。 ” 代码段如下所示: def numpysum(n): a = numpy.arange(n) * 2 b = numpy.arange(n) * 3 c = a + b return c 图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!前 言 5 1 2

31、 3 4 5 8 10 13 9 6 7 12 11 当我们希望你注意代码中的某一部分时,会将相关的行或项用粗体表示: 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按钮进入下一界面

32、。 ” 警告或重要说明将写在这里。 小贴士和技巧将写在这里。 读者反馈 一直以来,我们都非常欢迎读者朋友的意见反馈。请告诉我们你对本书的看法,以及你喜欢还是不喜欢书中的内容。你的意见对我们非常重要,我们将努力使你从阅读中得到最大的收获。 如果希望提出一些反馈意见, 敬请发送邮件至, 并请在邮件标题中写上书名。 如果你想看某方面的书并希望我们出版,请通过上的SUGGEST A TITLE表单提交选题建议,或发送邮件至。 如果你是某个领域的专家,或有兴趣写书,欢迎访问 售后支持 感谢你购买Packt出版的图书。我们有诸多售后支持服务,希望给你提供最大的附加价值。 图灵社区会员 heruihong

33、专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!6 前 言 示例代码下载 如果你是的注册用户并从那里购买了图书, 可以从网站上下载配套的示例代码。如果你是在别处购买了本书,可以访问 勘误 尽管我们处处小心以保证图书内容的准确性,但错误仍在所难免。如果你在阅读过程中发现错误并告知我们,不管是文字还是代码中的错误,我们都将不胜感激。这样做可使其他读者免于困惑,也能帮助我们不断改进后续版本。如果你发现任何错误,敬请访问www.packtpub. com/support报告给我们,即在网页上选择你购买的图书,单击

34、errata submission form(提交勘误)链接,并输入详细描述。一旦你提出的错误被证实,你的勘误将被接受并上传至我们的网站,或加入到已有的勘误列表中。 若要查看已有勘误, 请访问 关于盗版 在网上, 所有媒体都会遭遇盗版问题。 Packt非常重视版权保护工作。 如果你在网上发现Packt出版物的任何非法副本,请立即向我们提供侵权网站的地址或名称,以便我们采取补救措施。 敬请通过联系我们,告知涉嫌侵权内容的链接。 我们非常感激你的帮助。这将保护我们作者的利益,同时也使我们有能力继续提供高品质的内容。 疑难解答 如果对本书的任何方面有疑问,欢迎发送邮件至,我们将尽最大努力为你答疑解惑

35、。 也可在图灵社区(iT)本书网页免费注册下载。编者注 关于本书中文版的勘误,请访问图灵社区(iT)本书网页提交。编者注 图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!目 录 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 17 目 录 第 1 章 NumPy 快速入门.1 1.1 Python.1 1.2 动手实践:在不同的操作系统上 安装 Python.1 1.3 Windows.2 1.4 动手实践:在 Windows 上安装

36、NumPy、Matplotlib、SciPy 和 IPython.2 1.5 Linux.4 1.6 动手实践:在 Linux 上安装 NumPy、Matplotlib、SciPy 和 IPython.5 1.7 Mac OS X.5 1.8 动手实践:在 Mac OS X 上安装 NumPy、Matplotlib 和 SciPy.5 1.9 动手实践:使用 MacPorts 或 Fink 安装NumPy、SciPy、Matplotlib 和 IPython.7 1.10 编译源代码.8 1.11 数组对象.8 1.12 动手实践:向量加法.8 1.13 IPython:一个交互式 shell

37、 工具.11 1.14 在线资源和帮助.14 1.15 本章小结.15 第 2 章 NumPy 基础.16 2.1 NumPy 数组对象.16 2.2 动手实践:创建多维数组.17 2.2.1 选取数组元素.18 2.2.2 NumPy 数据类型.19 2.2.3 数据类型对象.20 2.2.4 字符编码.20 2.2.5 自定义数据类型.21 2.2.6 dtype类的属性.22 2.3 动手实践:创建自定义数据类型.22 2.4 一维数组的索引和切片.23 2.5 动手实践:多维数组的切片和索引.23 2.6 动手实践:改变数组的维度.26 2.7 数组的组合.27 2.8 动手实践:组合

38、数组.27 2.9 数组的分割.30 2.10 动手实践:分割数组.30 2.11 数组的属性.32 2.12 动手实践:数组的转换.34 2.13 本章小结.35 第 3 章 常用函数.36 3.1 文件读写.36 3.2 动手实践:读写文件.36 3.3 CSV 文件.37 3.4 动手实践:读入 CSV 文件.37 3.5 成交量加权平均价格(VWAP).38 3.6 动手实践:计算成交量加权平均价 格.38 3.6.1 算术平均值函数.38 3.6.2 时间加权平均价格.39 3.7 取值范围.39 3.8 动手实践:找到最大值和最小值.40 3.9 统计分析.41 3.10 动手实践

39、:简单统计分析.41 3.11 股票收益率.43 3.12 动手实践:分析股票收益率.43 3.13 日期分析.45 3.14 动手实践:分析日期数据.45 3.15 周汇总.48 图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!2 目 录 3.16 动手实践:汇总数据.48 3.17 真实波动幅度均值(ATR).52 3.18 动手实践:计算真实波动幅度均值.52 3.19 简单移动平均线.54 3.20 动手实践:计算简单移动平均线.54 3.21 指数移动平均线.5

40、6 3.22 动手实践:计算指数移动平均线.56 3.23 布林带.58 3.24 动手实践:绘制布林带.58 3.25 线性模型.61 3.26 动手实践:用线性模型预测价格.61 3.27 趋势线.63 3.28 动手实践:绘制趋势线.63 3.29 ndarray对象的方法.66 3.30 动手实践:数组的修剪和压缩.67 3.31 阶乘.67 3.32 动手实践:计算阶乘.67 3.33 本章小结.68 第 4 章 便捷函数.70 4.1 相关性.70 4.2 动手实践:股票相关性分析.71 4.3 多项式.74 4.4 动手实践:多项式拟合.74 4.5 净额成交量.77 4.6 动

41、手实践:计算 OBV.78 4.7 交易过程模拟.79 4.8 动手实践:避免使用循环.80 4.9 数据平滑.82 4.10 动手实践:使用hanning函数平滑 数据.82 4.11 本章小结.85 第 5 章 矩阵和通用函数.86 5.1 矩阵.86 5.2 动手实践:创建矩阵.86 5.3 从已有矩阵创建新矩阵.88 5.4 动手实践:从已有矩阵创建新矩阵.88 5.5 通用函数.89 5.6 动手实践:创建通用函数.89 5.7 通用函数的方法.90 5.8 动手实践:在add上调用通用函数的 方法.91 5.9 算术运算.93 5.10 动手实践:数组的除法运算.93 5.11 模

42、运算.95 5.12 动手实践:模运算.95 5.13 斐波那契数列.96 5.14 动手实践:计算斐波那契数列.96 5.15 利萨茹曲线.97 5.16 动手实践:绘制利萨茹曲线.97 5.17 方波.99 5.18 动手实践:绘制方波.99 5.19 锯齿波和三角波.100 5.20 动手实践:绘制锯齿波和三角波.101 5.21 位操作函数和比较函数.102 5.22 动手实践:玩转二进制位.102 5.23 本章小结.104 第 6 章 深入学习 NumPy 模块.105 6.1 线性代数.105 6.2 动手实践:计算逆矩阵.105 6.3 求解线性方程组.107 6.4 动手实践

43、:求解线性方程组.107 6.5 特征值和特征向量.108 6.6 动手实践:求解特征值和特征向量.108 6.7 奇异值分解.110 6.8 动手实践:分解矩阵.110 6.9 广义逆矩阵.112 6.10 动手实践:计算广义逆矩阵.112 6.11 行列式.113 6.12 动手实践:计算矩阵的行列式.113 6.13 快速傅里叶变换.114 6.14 动手实践:计算傅里叶变换.114 6.15 移频.115 6.16 动手实践:移频.116 6.17 随机数.117 6.18 动手实践:硬币赌博游戏.117 6.19 超几何分布.119 6.20 动手实践:模拟游戏秀节目.119 图灵社

44、区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!目 录 3 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 17 6.21 连续分布.121 6.22 动手实践:绘制正态分布.121 6.23 对数正态分布.122 6.24 动手实践:绘制对数正态分布.122 6.25 本章小结.123 第 7 章 专用函数.124 7.1 排序.124 7.2 动手实践:按字典序排序.124 7.3 复数.126 7.4 动手实践:对复数进行排序.126 7.

45、5 搜索.127 7.6 动手实践:使用searchsorted 函数.127 7.7 数组元素抽取.128 7.8 动手实践:从数组中抽取元素.128 7.9 金融函数.129 7.10 动手实践:计算终值.130 7.11 现值.131 7.12 动手实践:计算现值.131 7.13 净现值.131 7.14 动手实践:计算净现值.132 7.15 内部收益率.132 7.16 动手实践:计算内部收益率.132 7.17 分期付款.133 7.18 动手实践:计算分期付款.133 7.19 付款期数.133 7.20 动手实践:计算付款期数.134 7.21 利率.134 7.22 动手实

46、践:计算利率.134 7.23 窗函数.134 7.24 动手实践:绘制巴特利特窗.135 7.25 布莱克曼窗.135 7.26 动手实践:使用布莱克曼窗平滑股价 数据.136 7.27 汉明窗.137 7.28 动手实践:绘制汉明窗.137 7.29 凯泽窗.138 7.30 动手实践:绘制凯泽窗.138 7.31 专用数学函数.139 7.32 动手实践:绘制修正的贝塞尔 函数.139 7.33 sinc函数.140 7.34 动手实践:绘制sinc函数.140 7.35 本章小结.142 第 8 章 质量控制.143 8.1 断言函数.143 8.2 动手实践:使用assert_alm

47、ost_ equal断言近似相等.144 8.3 近似相等.145 8.4 动手实践:使用assert_approx_ equal断言近似相等.145 8.5 数组近似相等.146 8.6 动手实践:断言数组近似相等.146 8.7 数组相等.147 8.8 动手实践:比较数组.147 8.9 数组排序.148 8.10 动手实践:核对数组排序.148 8.11 对象比较.149 8.12 动手实践:比较对象.149 8.13 字符串比较.149 8.14 动手实践:比较字符串.150 8.15 浮点数比较.150 8.16 动手实践:使用assert_array_ almost_equal_

48、nulp比较浮点数.151 8.17 多 ULP 的浮点数比较.151 8.18 动手实践:设置maxulp并比较 浮点数.151 8.19 单元测试.152 8.20 动手实践:编写单元测试.152 8.21 nose和测试装饰器.154 8.22 动手实践:使用测试装饰器.155 8.23 文档字符串.157 8.24 动手实践:执行文档字符串测试.157 8.25 本章小结.158 图灵社区会员 heruihong 专享 尊重版权欢迎加入非盈利Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!4 目 录 第 9 章 使用 Mat

49、plotlib 绘图.159 9.1 简单绘图.159 9.2 动手实践:绘制多项式函数.159 9.3 格式字符串.161 9.4 动手实践:绘制多项式函数及其导 函数.161 9.5 子图.163 9.6 动手实践:绘制多项式函数及其导 函数.163 9.7 财经.165 9.8 动手实践:绘制全年股票价格.165 9.9 直方图.167 9.10 动手实践:绘制股价分布直方图.167 9.11 对数坐标图.169 9.12 动手实践:绘制股票成交量.169 9.13 散点图.171 9.14 动手实践:绘制股票收益率和成交量 变化的散点图.171 9.15 着色.173 9.16 动手实践:根据条件进行着色.173 9.17 图例和注释.175 9.18 动手实践:使用图例和注释.175 9.19 三维绘图.177 9.20 动手实践:在三维空间中绘图.178 9.21 等高线图.179 9.22 动手实践:绘制色彩填充的等高 线图.179 9.23 动画.180 9.24 动手实践:制作动画.180 9.25 本章小结.182 第 10 章 NumPy 的扩展:SciPy.183 10.1 MATLAB 和 Octave.183 10.2 动手实践:保存和加载.mat文件.183 10.3 统计.184 10.4 动手实践:分析随机数.185 10.5 样本比对和 Sci

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报