良言一句三冬暖,恶语伤人六月寒。
--明代谚语
:

Python科学计算(第2版)

Python科学计算(第2版)

作者: 张若愚

出版社: 清华大学出版社

出版时间: 2016-4-29

价格: 118

ISBN: 9787302426585

扫码右侧二维码

作者简介:

张若愚,毕业于华中理工大学(现华中科技大学)通信工程专业,2004年获日本姬路工业大学(现兵库县立大学)硕士学位。毕业后于日本神户制钢综合研究所从事研究开发工作至今,研究方向为:嵌入式DSP信号处理系统开发,嵌入式MCU控制系统开发,工业控制软件开发,信号处理、数据处理以及生产系统的计算机模拟。在工作中他积极采用Python作为主要编程语言,在数据处理、信号分析、工业控制、算法模拟等领域取得了较好的研究成果。已完成的研究课题有:嵌入式声音分离系统、车载音响设备、超声波探伤系统、压缩机系统的数字模拟等。

内容简介:

本书介绍如何用 Python 开发科学计算的应用程序,除了介绍数值计算之外,还着重介绍了如何制作交互式二维、三维图像,如何设计精巧的程序界面,如何与 C 语言编写的高速计算程序结合,如何编写声音、图像处理算法等内容。本书采用 IPython notebook 编写,所有的程序均能在本书提供的运行环境中正常运行,书中所印刷的图表以及程序输出为均为自动运行的结果,保证了书中所有程序的正确性以及可读性。本书附盘中附带本书所有章节的 IPython notebook ,方便读者再现书中所有实例。

目录:

第1章 Python科学计算环境的安装与简介 1 1.1 Python简介 1 1.1.1 Python 2还是Python 3 1 1.1.2 开发环境 2 1.1.3 集成开发环境(IDE) 5 1.2 IPython Notebook入门 9 1.2.1 基本操作 10 1.2.2 魔法(Magic)命令 12 1.2.3 Notebook的显示系统 20 1.2.4 定制IPython Notebook 24 1.3 扩展库介绍 27 1.3.1 数值计算库 27 1.3.2 符号计算库 28 1.3.3 绘图与可视化 28 1.3.4 数据处理和分析 29 1.3.5 界面设计 30 1.3.6 图像处理和计算机视觉 31 1.3.7 提高运算速度 31 第2章 NumPy-快速处理数据 33 2.1 ndarray对象 33 2.1.1 创建 34 2.1.2 元素类型 35 2.1.3 自动生成数组 37 2.1.4 存取元素 40 2.1.5 多维数组 43 2.1.6 结构数组 47 2.1.7 内存结构 50 2.2 ufunc函数 56 2.2.1 四则运算 58 2.2.2 比较运算和布尔运算 59 2.2.3 自定义ufunc函数 61 2.2.4 广播 62 2.2.5 ufunc的方法 66 2.3 多维数组的下标存取 68 2.3.1 下标对象 68 2.3.2 整数数组作为下标 70 2.3.3 一个复杂的例子 72 2.3.4 布尔数组作为下标 73 2.4 庞大的函数库 74 2.4.1 随机数 74 2.4.2 求和、平均值、方差 77 2.4.3 大小与排序 81 2.4.4 统计函数 86 2.4.5 分段函数 89 2.4.6 操作多维数组 92 2.4.7 多项式函数 96 2.4.8 多项式函数类 98 2.4.9 各种乘积运算 103 2.4.10 广义ufunc函数 106 2.5 实用技巧 110 2.5.1 动态数组 110 2.5.2 和其他对象共享内存 112 2.5.3 与结构数组共享内存 115 第3章 SciPy-数值计算库 117 3.1 常数和特殊函数 117 3.2 拟合与优化-optimize 119 3.2.1 非线性方程组求解 120 3.2.2 最小二乘拟合 121 3.2.3 计算函数局域最小值 125 3.2.4 计算全域最小值 127 3.3 线性代数-linalg 128 3.3.1 解线性方程组 129 3.3.2 最小二乘解 130 3.3.3 特征值和特征向量 132 3.3.4 奇异值分解-SVD 134 3.4 统计-stats 136 3.4.1 连续概率分布 136 3.4.2 离散概率分布 139 3.4.3 核密度估计 140 3.4.4 二项分布、泊松分布、伽玛分布 142 3.4.5 学生t-分布与t检验 147 3.4.6 卡方分布和卡方检验 151 3.5 数值积分-integrate 154 3.5.1 球的体积 154 3.5.2 解常微分方程组 156 3.5.3 ode类 157 3.5.4 信号处理-signal 164 3.5.5 中值滤波 164 3.5.6 滤波器设计 165 3.5.7 连续时间线性系统 167 3.6 插值-interpolate 172 3.6.1 一维插值 172 3.6.2 多维插值 177 3.7 稀疏矩阵-sparse 181 3.7.1 稀疏矩阵的存储形式 182 3.7.2 最短路径 183 3.8 图像处理-ndimage 186 3.8.1 形态学图像处理 187 3.8.2 图像分割 192 3.9 空间算法库-spatial 195 3.9.1 计算最近旁点 195 3.9.2 凸包 199 3.9.3 沃罗诺伊图 201 3.9.4 德劳内三角化 204 第4章 matplotlib-绘制精美的图表 207 4.1 快速绘图 207 4.1.1 使用pyplot模块绘图 207 4.1.2 面向对象方式绘图 210 4.1.3 配置属性 211 4.1.4 绘制多子图 212 4.1.5 配置文件 215 4.1.6 在图表中显示中文 217 4.2 Artist对象 220 4.2.1 Artist的属性 221 4.2.2 Figure容器 223 4.2.3 Axes容器 224 4.2.4 Axis容器 226 4.2.5 Artist对象的关系 230 4.3 坐标变换和注释 231 4.3.1 4种坐标系 234 4.3.2 坐标变换的流水线 236 4.3.3 制作阴影效果 240 4.3.4 添加注释 241 4.4 块、路径和集合 243 4.4.1 Path与Patch 243 4.4.2 集合 245 4.5 绘图函数简介 255 4.5.1 对数坐标图 255 4.5.2 极坐标图 256 4.5.3 柱状图 257 4.5.4 散列图 258 4.5.5 图像 259 4.5.6 等值线图 261 4.5.7 四边形网格 264 4.5.8 三角网格 267 4.5.9 箭头图 269 4.5.10 三维绘图 273 4.6 matplotlib技巧集 274 4.6.1 使用agg后台在图像上绘图 274 4.6.2 响应鼠标与键盘事件 277 4.6.3 动画 285 4.6.4 添加GUI面板 288 第5章 Pandas-方便的数据分析库 291 5.1 Pandas中的数据对象 291 5.1.1 Series对象 291 5.1.2 DataFrame对象 293 5.1.3 Index对象 297 5.1.4 MultiIndex对象 298 5.1.5 常用的函数参数 300 5.1.6 DataFrame的内部结构 301 5.2 下标存取 303 5.2.1 []操作符 304 5.2.2 .loc[]和.iloc[]存取器 304 5.2.3 获取单个值 306 5.2.4 多级标签的存取 306 5.2.5 query()方法 307 5.3 文件的输入输出 307 5.3.1 CSV文件 308 5.3.2 HDF5文件 309 5.3.3 读写数据库 313 5.3.4 使用Pickle序列化 314 5.4 数值运算函数 315 5.5 时间序列 323 5.5.1 时间点、时间段、时间间隔 323 5.5.2 时间序列 326 5.5.3 与NaN相关的函数 329 5.5.4 改变DataFrame的形状 333 5.6 分组运算 338 5.6.1 groupby()方法 339 5.6.2 GroupBy对象 340 5.6.3 分组-运算-合并 341 5.7 数据处理和可视化实例 347 5.7.1 分析Pandas项目的提交历史 347 5.7.2 分析空气质量数据 354 第6章 SymPy-符号运算好帮手 359 6.1 从例子开始 359 6.1.1 封面上的经典公式 359 6.1.2 球体体积 361 6.1.3 数值微分 362 6.2 数学表达式 365 6.2.1 符号 365 6.2.2 数值 367 6.2.3 运算符和函数 368 6.2.4 通配符 371 6.3 符号运算 373 6.3.1 表达式变换和化简 373 6.3.2 方程 376 6.3.3 微分 377 6.3.4 微分方程 378 6.3.5 积分 379 6.4 输出符号表达式 380 6.4.1 lambdify 381 6.4.2 用autowrap()编译表达式 381 6.4.3 使用cse()分步输出表达式 384 6.5 机械运动模拟 385 6.5.1 推导系统的微分方程 386 6.5.2 将符号表达式转换为程序 388 6.5.3 动画演示 389 第7章 Traits & TraitsUI-轻松制作图形界面 393 7.1 Traits类型入门 393 7.1.1 什么是Traits属性 393 7.1.2 Trait属性的功能 396 7.1.3 Trait类型对象 399 7.1.4 Trait的元数据 401 7.2 Trait类型 403 7.2.1 预定义的Trait类型 403 7.2.2 Property属性 406 7.2.3 Trait属性监听 408 7.2.4 Event和Button属性 411 7.2.5 动态添加Trait属性 412 7.3 TraitsUI入门 413 7.3.1 默认界面 414 7.3.2 用View定义界面 415 7.4 用Handler控制界面和模型 425 7.4.1 用Handler处理事件 426 7.4.2 Controller和UIInfo对象 429 7.4.3 响应Trait属性的事件 431 7.5 属性编辑器 432 7.5.1 编辑器演示程序 433 7.5.2 对象编辑器 436 7.5.3 自定义编辑器 440 7.6 函数曲线绘制工具 444 第8章 TVTK与Mayavi-数据的三维可视化 451 8.1 VTK的流水线(Pipeline) 452 8.1.1 显示圆锥 452 8.1.2 用ivtk观察流水线 455 8.2 数据集 461 8.2.1 ImageData 461 8.2.2 RectilinearGrid 466 8.2.3 StructuredGrid 467 8.2.4 PolyData 470 8.3 TVTK的改进 473 8.3.1 TVTK的基本用法 474 8.3.2 Trait属性 475 8.3.3 序列化 476 8.3.4 集合迭代 476 8.3.5 数组操作 477 8.4 TVTK可视化实例 478 8.4.1 切面 479 8.4.2 等值面 484 8.4.3 流线 487 8.4.4 计算圆柱的相贯线 491 8.5 用mlab快速绘图 496 8.5.1 点和线 497 8.5.2 Mayavi的流水线 498 8.5.3 二维图像的可视化 501 8.5.4 网格面mesh 505 8.5.5 修改和创建流水线 508 8.5.6 标量场 511 8.5.7 矢量场 513 8.6 将TVTK和Mayavi嵌入界面 515 8.6.1 TVTK场景的嵌入 516 8.6.2 Mayavi场景的嵌入 518 第9章 OpenCV-图像处理和计算机视觉 523 9.1 图像的输入输出 523 9.1.1 读入并显示图像 523 9.1.2 图像类型 524 9.1.3 图像输出 525 9.1.4 字节序列与图像的相互转换 526 9.1.5 视频输出 527 9.1.6 视频输入 529 9.2 图像处理 530 9.2.1 二维卷积 530 9.2.2 形态学运算 532 9.2.3 填充-floodFill 534 9.2.4 去瑕疵-inpaint 536 9.3 图像变换 537 9.3.1 几何变换 537 9.3.2 重映射-remap 540 9.3.3 直方图 543 9.3.4 二维离散傅立叶变换 547 9.3.5 用双目视觉图像计算深度信息 550 9.4 图像识别 553 9.4.1 用霍夫变换检测直线和圆 553 9.4.2 图像分割 558 9.4.3 SURF特征匹配 561 9.5 形状与结构分析 564 9.5.1 轮廓检测 565 9.5.2 轮廓匹配 568 9.6 类型转换 569 9.6.1 分析cv2的源程序 570 9.6.2 Mat对象 572 9.3.3 在cv和cv2之间转换图像对象 574 第10章 Cython-编译Python程序 575 10.1 配置编译器 575 10.2 Cython入门 577 10.2.1 计算矢量集的距离矩阵 577 10.2.2 将Cython程序编译成扩展模块 579 10.2.3 C语言中的Python对象类型 581 10.2.4 使用cdef关键字声明变量类型 582 10.2.5 使用def定义函数 585 10.2.6 使用cdef定义C语言函数 586 10.3 高效处理数组 587 10.3.1 Cython的内存视图 587 10.3.2 用降采样提高绘图速度 592 10.4 使用Python标准对象和API 596 10.4.1 操作list对象 596 10.4.2 创建tuple对象 597 10.4.3 用array.array作为动态数组 598 10.5 扩展类型 600 10.5.1 扩展类型的基本结构 600 10.5.2 一维浮点数向量类型 601 10.5.3 包装ahocorasick库 606 10.6 Cython技巧集 612 10.6.1 创建ufunc函数 613 10.6.2 快速调用DLL中的函数 617 10.6.3 调用BLAS函数 620 第11章 实例 627 11.1 使用泊松混合合成图像 627 11.1.1 泊松混合算法 627 11.1.2 编写代码 629 11.1.3 演示程序 632 11.2 经典力学模拟 632 11.2.1 悬链线 633 11.2.2 最速降线 638 11.2.3 单摆模拟 641 11.3 推荐算法 644 11.3.1 读入数据 645 11.3.2 推荐性能评价标准 646 11.3.3 矩阵分解 647 11.3.4 使用最小二乘法实现矩阵分解 648 11.3.5 使用Cython迭代实现矩阵分解 651 11.4 频域信号处理 654 11.4.1 FFT知识复习 654 11.4.2 合成时域信号 657 11.4.3 观察信号的频谱 660 11.4.4 卷积运算 671 11.5 布尔可满足性问题求解器 675 11.5.1 用Cython包装PicoSAT 678 11.5.2 数独游戏 682 11.5.3 扫雷游戏 686 11.6 分形 693 11.6.1 Mandelbrot集合 693 11.6.2 迭代函数系统 699 11.6.3 L-System分形 706 11.6.4 分形山脉 710

相关推荐

追问
2024-11-16 8.9k
长安的荔枝
2024-11-15 4.3k

评论

2024-06-22 23:46:22
Python爱好者发表
太赞了!这本书简直就是Python科学计算的宝典。作为一名初学者,我从这本书中受益匪浅。作者循序渐进的讲解方式让我对Python科学计算有了系统性的了解。尤其欣赏书中对不同库的详细介绍和示例,让我能够快速上手各种科学计算任务。书中附带的IPython notebook也非常棒,让我可以轻松复现书中的代码和可视化结果。
2024-06-22 23:46:22
数据科学家发表
这本书是我数据科学工具箱中不可或缺的一部分。它不仅提供了扎实的理论基础,还涵盖了大量实践场景和技巧。作者对Python科学计算生态系统的深入理解令人钦佩,书中介绍的各种库和工具极大地扩展了Python在科学计算领域的能力。通过这本书,我提升了数据预处理、建模和可视化方面的技能。
2024-06-22 23:46:22
科研工作者发表
对于科研工作者来说,这本书是一本必备指南。作者对科学计算需求的深入了解体现在书中对各种算法和技术的精心选择上。本书内容丰富,涵盖了数据处理、建模、可视化等不同方面的知识。通过这本书,我不仅提升了Python编程技能,还对科学计算的原理有了更深入的理解。
2024-06-22 23:46:22
程序员发表
本书是Python科学计算的权威之作,值得所有程序员收藏。作者通过一个个生动的示例和清晰的讲解,将复杂的概念变得浅显易懂。从基本数据类型到高级算法,本书涵盖了Python科学计算的方方面面。通过这本书,我增强了对Python科学计算的理解,并极大地提升了我的编程技巧。
2024-06-22 23:46:22
数据分析师发表
这是一本为数据分析师量身打造的宝贵资源。作者对数据分析和可视化技术的深刻理解贯穿全书。本书不仅介绍了数据分析所需的Python工具和技巧,还提供了大量的实际案例和示例。通过这本书,我掌握了Python数据分析的精髓,并提升了我的数据洞察能力。
登录发表评论