无论您是科学/分析编程的新手还是经验丰富的专家,这本书都将为您提供成功创建,优化和分发 Python / NumPy 分析模块所需的技能。
从一开始,这本书将涵盖 NumPy 数组的关键功能以及调整数据格式以使其最适合您的分析需求的详细信息。 然后,您将获得各种多维,数据类型的分析所共有的核心和子模块的演练。 接下来,您将继续进行关键技术实现,例如线性代数和傅立叶分析。 最后,您将学习如何使用 Cython 和 NumPy C API 扩展 NumPy 的功能和性能。 本书的最后一章还提供了高级材料,可帮助您自己进一步学习。
如果您打算在分析项目中使用 NumPy,则本指南是非常宝贵的教程。
第 1 章,“NumPy 简介”是本书的入门章节,它提供了帮助您设置环境的说明。 首先介绍科学 Python 模块系列(SciPy 栈),并说明 NumPy 在 Python 科学计算中所起的关键作用。
第 2 章,“NumPy ndarray
对象”涵盖了 NumPy ndarray
对象的基本用法,包括初始化,基本属性,数据类型和内存布局。 它还涵盖了操作下的理论,使您可以清晰地了解ndarray
。
第 3 章,“使用 Numpy 数组”是有关 NumPy ndarray
使用的高级章节,该章延续了第 2 章 NumPy ndarray
对象。 它涵盖了 NumPy 中的通用函数,并向您展示了加快代码速度的技巧。 它还显示形状控制和广播规则。
第 4 章,“Numpy 核心和子模块”包括两个部分。 第一部分详细说明了 NumPy ndarray
分配内存的方式与 CPU 缓存的交互之间的关系。 本章的第二部分介绍了特殊的 NumPy 数组,其中包含多种数据类型(结构/记录数组)。 此外,本章还将探讨 NumPy 中的实验性datetime64
模块。
第 5 章,“NumPy 中的线性代数”从利用线性代数模块的矩阵和数学计算开始。 它向您展示了解决数学问题的多种方法:使用矩阵,向量分解和多项式。 它还提供了曲线拟合和回归的具体实践。
第 6 章,“NumPy 中的傅立叶分析”涵盖了使用 NumPy FFT 模块进行的信号处理以及傅立叶在放大信号/放大图像时的失真应用。 它还提供了 Python 中 matplotlib 包的基本用法。
第 7 章,“构建和分发 NumPy 代码”涵盖了有关使用 Python 打包和发布代码的基本细节。 它基本介绍了 NumPy 特定的安装文件以及如何构建扩展模块。
第 8 章,“使用 Cython 加速 NumPy” ,向用户介绍 Cython 编程语言,并向读者介绍可用于加速现有 Python 代码的技术 。
第 9 章,“NumPy C-API 简介”提供了对 NumPy C API 的基本介绍,以及一般而言,如何编写现有包装程序 C/C++ 库。 本章旨在提供一个简短的介绍,并为读者提供有关如何创建新包装程序和了解现有程序的基本知识。
第 10 章,“扩展阅读”是本书的最后一章。 它总结了我们在书中所学的内容,并探索了 4 个依赖于 NumPy 数组的 SciPy 栈的 Python 模块,这些模块为您提供了进一步科学 Python 编程的想法。
对于本书,您将需要以下设置:
- Python 2.x 或 3.x
- NumPy 1.9(或更高版本)
- IPython 笔记本
- Matplotlib 1.3(或更高版本)
- Windows 中的 gnu gcc 编译器或等效版本
- 设置工具
如果您了解 Python,但对科学编程还是陌生的,并且想进入科学计算的世界,或者您是具有分析经验的 Python 开发人员,但想获得洞察力来增强您的分析技能。 无论哪种情况,NumPy 或这本书都是您的理想选择。 学习 NumPy 以及如何将 NumPy 应用于 Python 程序非常适合作为构建专业分析应用的下一步。 熟悉基本的编程概念和数学会有所帮助,但是不需要任何先验经验。 后面的章节涵盖了诸如包分发,加速代码和 C/C++ 集成之类的概念,这些概念需要一定数量的编程和调试知识。 假定读者能够在其首选的 OS 中构建 C/C++ 程序(在 Linux 和 cygwin / migw 中使用 gcc,在 Windows 中使用 gcc)。
在本书中,您将找到许多可以区分不同类型信息的文本样式。 以下是这些样式的一些示例,并解释了其含义。
文本,数据库表名称,文件夹名称,文件名,文件扩展名,路径名,虚拟 URL,用户输入和 Twitter 句柄中的代码字如下所示:“请注意,SciPy 可以表示很多东西,例如名为scipy
。”
代码块设置如下:
In [42]: print("Hello, World!")
任何命令行输入或输出的编写方式如下:
In [6]: x
Out[6]:
array([[1, 2, 3],
[2, 3, 4]])
In [7]: x[0,0]
Out[7]: 1
In [8]: x[1,2]
Out[8]: 4
新术语和重要词用粗体显示。
警告或重要提示会出现在这样的框中。
提示和技巧如下所示。