内容简介
NumPy是一个优秀的科学计算库,它提供了许多有用的数学函数、强大的多维数组对象和出色的计算性能不仅可以替代Matlab和Mathematica的许多功能,还可以成为Python科学计算生态系统的重要组成部分。但与这些商业产品不同的是,它是免费的开源软件。
这本书从NumPy安装开始,逐渐过渡到数组对象、常用函数、矩阵运算、线性代数、金融函数、窗函数、质量控制等,并致力于向初级Python程序员全面讲述NumPy及其用途。此外,通过书中丰富的例子,你还将学习Matplotlib绘图,并结合使用其他Python科学计算库(如SciPy和Scikits),使工作更加有效,并使代码更加简洁高效。
目录
- 第1章NumPy快速入门1
- 1.1 Python1
- 1.2 动手实践:在不同的操作系统上安装Python1
- 1.3 Windows2
- 1.4 动手实践:在Windows上安装NumPy、Matplotlib、SciPy和IPython2
- 1.5 Linux4
- 1.6 动手实践:在Linux上安装NumPy、Matplotlib、SciPy和IPython5
- 1.7 Mac OS X5
- 1.8 动手实践:在Mac OS X上安装NumPy、Matplotlib和SciPy5
- 1.9 动手实践:使用MacPorts或Fink安装NumPy、SciPy、Matplotlib和IPython7
- 1.10 编译源代码8
- 1.11 数组对象8
- 1.12 动手实践:向量加法8
- 1.13 IPython:一个交互式shell工具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 动手实践:组合数组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 动手实践:简单统计分析41
- 3.11 股票收益率43
- 3.12 动手实践:分析股票收益率43
- 3.13 日期分析45
- 3.14 动手实践:分析日期数据45
- 3.15 周汇总48
- 3.16 动手实践:汇总数据48
- 3.17 真实波动幅度均值(ATR)52
- 3.18 动手实践:计算真实波动幅度均值52
- 3.19 简单移动平均线54
- 3.20 动手实践:计算简单移动平均线54
- 3.21 指数移动平均线56
- 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 动手实践:计算OBV78
- 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 模运算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 动手实践:求解线性方程组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
- 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.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 动手实践:计算利率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_almost_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_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
- 第9章使用Matplotlib绘图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的扩展:SciPy183
- 10.1 MATLAB和Octave183
- 10.2 动手实践:保存和加载.mat文件183
- 10.3 统计184
- 10.4 动手实践:分析随机数185
- 10.5 样本比对和SciKits187
- 10.6 动手实践:比较股票对数收益率187
- 10.7 信号处理190
- 10.8 动手实践:检测QQQ股价的线性趋势190
- 10.9 傅里叶分析192
- 10.10 动手实践:对去除趋势后的信号进行滤波处理192
- 10.11 数学优化194
- 10.12 动手实践:拟合正弦波195
- 10.13 数值积分197
- 10.14 动手实践:计算高斯积分198
- 10.15 插值198
- 10.16 动手实践:一维插值198
- 10.17 图像处理200
- 10.18 动手实践:处理Lena图像200
- 10.19 音频处理202
- 10.20 动手实践:重复音频片段202
- 10.21 本章小结204
- 第11章玩转Pygame205
- 11.1 Pygame205
- 11.2 动手实践:安装Pygame205
- 11.3 Hello World206
- 11.4 动手实践:制作简单游戏206
- 11.5 动画208
- 11.6 动手实践:使用NumPy和Pygame制作动画对象208
- 11.7 Matplotlib211
- 11.8 动手实践:在Pygame中使用Matplotlib211
- 11.9 屏幕像素214
- 11.10 动手实践:访问屏幕像素214
- 11.11 人工智能216
- 11.12 动手实践:数据点聚类216
- 11.13 OpenGL和Pygame218
- 11.14 动手实践:绘制谢尔宾斯基地毯218
- 11.15 模拟游戏221
- 11.16 动手实践:模拟生命221
- 11.17 本章小结224
- 突击测验答案225
文档和代码示例的罗列,这适合有些基础后的入门。书里的股票与金融分析的示例代码值得一看。numpy & scipy挺好用啊,像我这样没学过高数的技校青年也可以方便地进行一些复杂的科学计算和金融计算啊。
老天爷不让我看最后一章只能果断放弃pygame了,前面还不错,介绍很细致,不过感觉numpy是不是东西比r少呀……