具体描述
本书带领读者了解熟悉当下最流行的科学计算库NumPy的方方面面。书中不仅介绍了NumPy的安装、使用和各种相关概念,还介绍了如何利用这一最新的开源软件库,以尽可能接近传统数学语言的方式,编写可读性好、实现效率高和运行速度快的代码。最后还探究了几个和NumPy相关的科学计算项目。此外,本书将为你掌握NumPy数组和通用函数打下坚实的基础,也会通过实例教你用Matplotlib绘图,并了解和SciPy相关的项目。
本书将帮助你:
• 学习高级索引技术和线性代数知识
• 了解数组形状及图像大小的调整
• 探察广播机制和直方图
• 分析NumPy代码并用可视化的方式表示分析结果
• 用Cython为代码提速
• 使用数组接口共享数据
• 使用通用函数和互操作功能
• 学习Matplotlib以及经常和NumPy同时使用的SciPy
作者简介
作者简介:
Ivan Idris
实验物理学硕士。先后任职于多家公司,从事Java开发、数据仓库开发和QA分析等工作。主要的兴趣是商业智能、大数据和云计算,喜欢编写整洁、可测试的代码,以及撰写有趣的技术文章。另著有NumPy Beginner's Guide和Instant Pygame for Python Game Development How-to等书。可以访问ivanidris.net获取更多信息。
译者简介:
张崇明
本科及研究生毕业于天津大学精密仪器与光电子工程学院,博士毕业于复旦大学计算机科学技术学院。在中兴通讯南京研发中心做过三年通信软件的开发。目前在上海师范大学信息与机电工程学院从事教学和科研工作。
目录信息
第1章 使用IPython 1
1.1 引言 1
1.2 安装IPython 2
1.2.1 具体步骤 2
1.2.2 攻略小结 3
1.3 使用IPython的shell 4
1.3.1 具体步骤 4
1.3.2 攻略小结 6
1.4 阅读手册页 6
1.4.1 具体步骤 6
1.4.2 攻略小结 6
1.5 安装Matplotlib 7
1.6 运行基于Web的notebook 8
1.6.1 准备工作 8
1.6.2 具体步骤 8
1.6.3 攻略小结 10
1.6.4 参考阅读 10
1.7 导出基于Web的notebook 10
1.8 导入基于Web的notebook 12
1.9 配置notebook服务器 14
1.9.1 具体步骤 15
1.9.2 攻略小结 16
1.10 初探SymPy配置 17
1.10.1 准备工作 17
1.10.2 具体步骤 17
第2章 高级索引和数组概念 19
2.1 引言 19
2.2 安装SciPy 20
2.2.1 准备工作 20
2.2.2 具体步骤 20
2.2.3 攻略小结 21
2.3 安装PIL 22
2.4 调整图像大小 22
2.4.1 准备工作 23
2.4.2 具体步骤 23
2.4.3 攻略小结 25
2.4.4 参考阅读 25
2.5 创建视图和副本 25
2.5.1 准备工作 25
2.5.2 具体步骤 26
2.5.3 攻略小结 27
2.6 翻转图像 27
2.6.1 具体步骤 27
2.6.2 参考阅读 29
2.7 高级索引 29
2.7.1 具体步骤 29
2.7.2 攻略小结 31
2.8 位置列表型索引 31
2.9 布尔型索引 32
2.9.1 具体步骤 33
2.9.2 攻略小结 34
2.9.3 参考阅读 34
2.10 数独游戏中的跨度技巧 34
2.10.1 具体步骤 35
2.10.2 攻略小结 37
2.11 用广播机制扩展数组 37
第3章 常用函数 40
3.1 引言 40
3.2 斐波那契数列求和 41
3.2.1 具体步骤 41
3.2.2 攻略小结 44
3.2.3 参考阅读 44
3.3 寻找质因数 44
3.3.1 具体步骤 44
3.3.2 攻略小结 46
3.4 寻找回文数 46
3.4.1 具体步骤 46
3.4.2 攻略小结 48
3.4.3 更多工作 48
3.5 确定稳态向量 48
3.5.1 具体步骤 48
3.5.2 攻略小结 52
3.5.3 参考阅读 53
3.6 发现幂律分布 53
3.6.1 具体步骤 53
3.6.2 攻略小结 55
3.6.3 参考阅读 55
3.7 定期在低点做交易 55
3.7.1 准备工作 56
3.7.2 具体步骤 56
3.7.3 攻略小结 58
3.7.4 参考阅读 58
3.8 模拟在随机时间点做交易 59
3.8.1 准备工作 59
3.8.2 具体步骤 59
3.8.3 攻略小结 61
3.8.4 参考阅读 61
3.9 用埃氏筛筛选整数 61
第4章 NumPy与其他软件的交互 63
4.1 引言 63
4.2 使用缓冲区协议 64
4.2.1 准备工作 64
4.2.2 具体步骤 64
4.2.3 攻略小结 66
4.2.4 参考阅读 66
4.3 使用数组接口 66
4.3.1 准备工作 66
4.3.2 具体步骤 66
4.3.3 攻略小结 67
4.3.4 参考阅读 68
4.4 与MATLAB和Octave交换数据 68
4.4.1 准备工作 68
4.4.2 具体步骤 68
4.4.3 参考阅读 69
4.5 安装RPy2 69
4.6 连接到R 69
4.6.1 准备工作 70
4.6.2 具体步骤 70
4.6.3 参考阅读 71
4.7 安装JPype 71
4.8 传递NumPy数组到JPype 71
4.8.1 具体步骤 72
4.8.2 攻略小结 73
4.8.3 参考阅读 73
4.9 安装谷歌应用程序引擎 73
4.10 在谷歌云中部署NumPy代码 74
4.10.1 具体步骤 75
4.10.2 攻略小结 76
4.11 在Python Anywhere的Web控制台中运行NumPy代码 76
4.11.1 具体步骤 77
4.11.2 攻略小结 78
4.12 设置PiCloud 78
4.12.1 具体步骤 79
4.12.2 攻略小结 80
第5章 声音和图像处理 81
5.1 引言 81
5.2 加载图像到内存映射区 81
5.2.1 准备工作 82
5.2.2 具体步骤 82
5.2.3 攻略小结 85
5.2.4 参考阅读 85
5.3 合并图像 85
5.3.1 准备工作 85
5.3.2 具体步骤 86
5.3.3 攻略小结 88
5.3.4 参考阅读 88
5.4 图像的模糊化处理 89
5.4.1 具体步骤 89
5.4.2 攻略小结 91
5.5 复制声音片段 91
5.5.1 具体步骤 91
5.5.2 攻略小结 93
5.6 合成声音 94
5.6.1 具体步骤 94
5.6.2 攻略小结 96
5.7 设计音频滤波器 96
5.7.1 具体步骤 97
5.7.2 攻略小结 99
5.8 用索贝尔滤波器进行边缘检测 99
5.8.1 具体步骤 99
5.8.2 攻略小结 101
第6章 特殊类型数组与通用函数 102
6.1 引言 102
6.2 创建一个通用函数 102
6.2.1 具体步骤 102
6.2.2 攻略小结 103
6.3 寻找勾股数 103
6.3.1 具体步骤 103
6.3.2 攻略小结 105
6.4 用chararray做字符串操作 105
6.4.1 具体步骤 105
6.4.2 攻略小结 106
6.5 创建一个masked类型的数组 106
6.5.1 具体步骤 106
6.5.2 攻略小结 108
6.6 忽略负值和极值 108
6.6.1 具体步骤 108
6.6.2 攻略小结 111
6.7 用recarray创建评分表 111
6.7.1 具体步骤 112
6.7.2 攻略小结 114
第7章 性能分析与调试 115
7.1 引言 115
7.2 用timeit进行性能分析 115
7.2.1 具体步骤 115
7.2.2 攻略小结 118
7.3 用IPython进行性能分析 118
7.3.1 具体步骤 118
7.3.2 攻略小结 120
7.4 安装line_profiler 120
7.4.1 准备工作 120
7.4.2 具体步骤 120
7.4.3 参考阅读 121
7.5 用line_profiler分析代码 121
7.5.1 具体步骤 121
7.5.2 攻略小结 122
7.6 用cProfile扩展模块分析代码 122
7.7 用IPython进行调试 123
7.7.1 具体步骤 124
7.7.2 攻略小结 125
7.8 用pudb进行调试 126
第8章 质量保证 127
8.1 引言 127
8.2 安装Pyflakes 127
8.2.1 准备工作 127
8.2.2 具体步骤 128
8.3 用Pyflakes进行静态分析 128
8.3.1 具体步骤 128
8.3.2 攻略小结 129
8.4 用Pylint分析代码 129
8.4.1 准备工作 129
8.4.2 具体步骤 130
8.4.3 攻略小结 130
8.4.4 参考阅读 131
8.5 用Pychecker进行静态分析 131
8.6 用docstrings测试代码 132
8.6.1 具体步骤 132
8.6.2 攻略小结 134
8.7 编写单元测试 134
8.7.1 具体步骤 134
8.7.2 攻略小结 136
8.8 用模拟对象测试代码 137
8.8.1 具体步骤 137
8.8.2 攻略小结 139
8.9 基于BDD方式的测试 139
8.9.1 具体步骤 139
8.9.2 攻略小结 141
第9章 用Cython为代码提速 142
9.1 引言 142
9.2 安装Cython 142
9.3 构建Hello World程序 143
9.3.1 具体步骤 143
9.3.2 攻略小结 144
9.4 在Cython中使用NumPy 144
9.4.1 具体步骤 145
9.4.2 攻略小结 146
9.5 调用C语言函数 146
9.5.1 具体步骤 146
9.5.2 攻略小结 148
9.6 分析Cython代码 148
9.6.1 具体步骤 148
9.6.2 攻略小结 150
9.7 用Cython求阶乘的近似值 150
9.7.1 具体步骤 150
9.7.2 攻略小结 152
第10章 有趣的Scikits 153
10.1 引言 153
10.2 安装scikits-learn 154
10.2.1 准备工作 154
10.2.2 具体步骤 154
10.3 加载范例数据集 155
10.4 用scikits-learn对道琼斯成分股做聚类分析 155
10.4.1 具体步骤 156
10.4.2 攻略小结 158
10.5 安装scikits-statsmodels 158
10.6 用scikits-statsmodels做正态性检验 159
10.6.1 具体步骤 159
10.6.2 攻略小结 160
10.7 安装scikits-image 160
10.8 检测角点 160
10.8.1 准备工作 161
10.8.2 具体步骤 161
10.8.3 攻略小结 162
10.9 检测边缘 162
10.10 安装Pandas 163
10.11 用Pandas估计股票收益的相关性 164
10.11.1 具体步骤 164
10.11.2 攻略小结 166
10.12 从statsmodels加载数据到pandas对象 166
10.12.1 准备工作 166
10.12.2 具体步骤 167
10.12.3 攻略小结 168
10.13 重采样时间序列数据 169
10.13.1 具体步骤 169
10.13.2 攻略小结 171
索引 172
· · · · · · (收起)
读后感
用户评价
这本书简直是为我量身打造的!作为一名刚刚接触数据科学领域的新手,我对于如何有效地处理和分析数据感到一丝茫然。Python虽然强大,但在面对海量数据时,原始的列表和循环操作效率实在不敢恭维。当我翻开《NumPy攻略》,仿佛打开了一扇新的大门。书中的讲解循序渐进,从最基础的数组创建,到多维数组的操作,再到广播机制的神奇应用,每一个概念都被阐述得清晰透彻。更重要的是,作者并没有停留在理论层面,而是提供了大量贴合实际的案例,让我能够亲手实践,巩固所学。例如,在讲解切片和索引时,书中不仅给出了各种奇特的组合方式,还用它们来解决诸如提取特定行、列或者子区域等常见问题。我特别喜欢书中关于“视图”和“副本”的解释,这让我对内存管理有了更深的理解,也避免了不少潜在的bug。当我看到书中通过NumPy向量化操作,将原本需要几百行Python代码才能实现的计算,压缩到寥寥数行,并且性能飙升时,我由衷地感叹NumPy的强大。这本书就像一位耐心的老师,一步步引导我掌握了这项核心技能,为我后续的学习打下了坚实的基础。
我是一名对数据可视化充满热情的学生,深知高质量的数据预处理是生成精美图表的前提。《NumPy攻略》这本书,我把它当作一本案头必备的参考书。它不仅仅是教我如何使用NumPy,更是让我理解了背后蕴含的数学思想。书中关于数组的“形状”(shape)、“维度”(ndim)、“跨度”(strides)等概念的解释,让我对数据结构有了更直观的认识。尤其是在处理不规则数据或进行数据重塑时,这些概念就显得尤为重要。我发现,很多时候在数据可视化过程中遇到的数据对齐、缺失值处理等问题,都可以通过NumPy的强大功能迎刃而解。书中关于随机数生成和统计函数的运用,对于我进行模拟实验和数据探索非常有帮助。我曾经花了大量时间手动处理CSV文件中的数据,而通过NumPy的`loadtxt`和`genfromtxt`函数,这一切变得轻而易举。这本书就像一本武林秘籍,让我掌握了驾驭数据的“内功心法”,为我后续学习Pandas、Matplotlib等工具打下了坚实的基础。
作为一名有多年编程经验的开发者,我一直追求更高效、更优雅的解决方案。在数据处理和机器学习领域,NumPy几乎是必不可少的工具。《NumPy攻略》这本书,尽管我自认为对Python有一定的了解,但阅读后依然收获颇丰。它没有从零开始讲述Python基础,而是直接切入NumPy的核心。我特别欣赏书中对数组数学运算的讲解,那些诸如点乘、叉乘、矩阵转置、逆矩阵等线性代数运算,在NumPy中都可以通过简洁的函数或方法实现,而且速度极快。书中的“广播”概念,更是让我领略到了NumPy的精妙之处,它允许不同形状的数组之间进行运算,极大地简化了代码。我工作中经常需要处理图像数据,而书中关于图像处理的示例,例如像素值裁剪、颜色通道分离等,都让我看到了NumPy在视觉领域应用的巨大潜力。这本书的语言风格比较直接,条理清晰,没有过多的修饰,非常适合我这种喜欢直奔主题的读者。阅读过程就像是在与一位经验丰富的技术伙伴交流,他会告诉你“应该这样做”,并且解释“为什么这样做是最好的”。
我是一名在学术界摸爬滚打多年的研究人员,过去的研究中,我习惯了使用MATLAB进行数值计算。虽然MATLAB功能强大,但在跨平台兼容性以及与其他Python库的集成方面,始终存在一些不便。当我决定将研究重心转向Python生态时,寻找一本能够快速入门NumPy的指南成为了当务之急。《NumPy攻略》的出现,无疑解决了我当时的困境。这本书的优点在于,它充分考虑到了我这样有一定数值计算基础的用户。书中在讲解NumPy特性时,并没有回避其底层原理,而是用简洁明了的语言解释了数组是如何在内存中组织的,以及向量化操作是如何实现的。这种深入浅出的讲解方式,让我能够更快地理解NumPy的优势所在。我尤其欣赏书中关于数值精度、数据类型转换以及通用函数(ufuncs)的章节,这些都是在进行科学计算时至关重要的细节。通过书中的例子,我得以迅速将许多MATLAB中的常见操作迁移到NumPy上来,例如矩阵乘法、傅里叶变换、随机数生成等。这本书的实用性体现在它提供的代码片段可以直接用于我的研究项目中,大大缩短了学习和适应新工具的时间。
我是一名初创公司的数据分析师,每天都在与各种各样的数据打交道。效率和准确性是我工作的重中之重。《NumPy攻略》这本书,可以说是解决了我的燃眉之急。它让我深刻理解了为什么在数据科学领域,NumPy如此重要。书中关于数组广播机制的讲解,简直是“点石成金”。原本需要复杂的循环和条件判断才能完成的操作,通过广播机制,一行代码就能搞定,而且速度快得惊人。我曾经在处理时间序列数据时,需要计算每个时间点与基准日期的差值,用纯Python写了一个下午,而读完NumPy的相关章节,几分钟就解决了问题,并且性能提升了几个数量级。书中关于数组的逻辑运算和条件选择的用法,对于数据筛选和异常值检测尤为实用。我特别喜欢书中关于“视图”和“副本”的区分,这避免了我在修改数组时可能产生的意想不到的副作用。这本书的价值在于,它不仅仅教授了工具的使用,更传递了一种思维方式:如何用向量化的思维去解决问题,如何让代码更简洁、更高效。对于和我一样需要快速提升数据处理效率的从业者来说,这本书是绝对的“神器”。
好书,可惜是2.7系,讲的很透彻,涉及面广但不深
只想说,这本书像是blog的拼凑,例子也介绍的比较简略,懂的人能看懂,不明白的看了还是不明白~不适合新手~
介绍得比较简单了
不知道是不是在印尼算是一本好书
2017-01-19 想读。2017年10月13日才匆匆翻完,简直了