NumPy 是什么?
在开始之前,简单理解一下 NumPy:
NumPy (Numerical Python) 是 Python 语言中进行科学计算的核心库,它提供了一个高性能的多维数组对象 ndarray,以及这些数组上操作的大量工具函数,NumPy 是 Pandas、Scikit-learn、TensorFlow、PyTorch 等几乎所有数据科学生态库的基础。

免费且优质的 NumPy 教程 PDF
这些资源是学习 NumPy 的最佳起点,它们通常由官方社区或知名教育机构提供,质量高且完全免费。
NumPy 官方文档
这是最权威、最准确的学习资料,虽然不完全是 PDF 格式,但你可以轻松地将其打印或导出为 PDF。
- 链接: NumPy User Guide
- 特点:
- 权威性: 由 NumPy 开发团队维护,内容绝对准确。
- 全面性: 涵盖了从基础概念到高级特性的所有内容。
- 结构清晰: 分为“入门”、“基础知识”、“高级”等模块,适合不同阶段的读者。
- 适合人群: 所有学习者,尤其是希望深入了解其内部机制和高级功能的人。
《Python Data Science Handbook》 (Python 数据科学手册)
作者是 Jake VanderPlas,这本书是数据科学领域的经典之作,虽然整本书是关于数据科学的,但其中关于 NumPy 的章节写得极其出色。
- 链接: GitHub - Jake VanderPlas, Python Data Science Handbook
- 如何获取 PDF: 在 GitHub 仓库中,你可以找到 Jupyter Notebook 文件,可以直接在浏览器中运行代码,作者也提供了将全书内容转换为 PDF 的选项(通常在仓库的
resources文件夹或通过特定命令生成)。 - 特点:
- 实战导向: 通过大量实例和可运行的代码来讲解概念。
- 讲解深入浅出: 对 NumPy 的核心概念(如数组、广播、通用函数等)的解释非常透彻。
- 可视化: 包含许多直观的图表来帮助理解。
- 适合人群: 初学者和有一定 Python 基础,希望将 NumPy 应用于数据科学实践的学习者。
《A Byte of Python》 (Python 入门) 的 NumPy 章节
这是一本非常经典的 Python 入门书,其中也包含了 NumPy 的基础介绍。

- 链接: Swaroop C.H., A Byte of Python
- 特点:
- 简洁明了: 适合快速了解 NumPy 的基本用法。
- 语言平实: 适合编程新手。
- 适合人群: Python 和 NumPy 的纯初学者。
国内优秀资源 (推荐)
-
《利用 Python 进行数据分析》 (Wes McKinney 著,中文版)
- 简介: Pandas 库的创始人 Wes McKinney 所著,这本书是数据科学领域的另一本圣经。第 4 章 NumPy 基础是必读章节,虽然书本身不是免费的,但很多图书馆和在线资源可以找到电子版。
- 特点: 实用性极强,紧密结合数据分析场景,讲解非常接地气。
-
廖雪峰的官方网站 - NumPy 教程
- 链接: 廖雪峰的 NumPy 教程
- 特点: 廖雪峰老师的教程以清晰、易懂、无广告著称,他的 NumPy 教程系统地讲解了核心概念,非常适合国内学习者,虽然不是 PDF,但网页版内容质量极高,可以方便地复制代码进行练习。
核心知识点梳理 (PDF 内容纲要)
一份好的 NumPy 教程 PDF 通常会包含以下核心内容,你可以根据这个框架来检验自己的学习进度。
第 1 章:NumPy 快速入门
- 为什么需要 NumPy? (对比 Python List 的性能优势)
- 安装 NumPy:
pip install numpy - 导入 NumPy:
import numpy as np - 创建第一个数组:
np.array(),np.zeros(),np.ones(),np.arange(),np.linspace()
第 2 章:NumPy 数组核心
ndarray对象: NumPy 的核心数据结构- 属性:
shape(形状),dtype(数据类型),size(元素个数),ndim(维度数) - 数据类型:
int,float,bool,str,complex及其精度(如int32,float64) - 索引与切片: 与 Python List 类似,但更强大(如
arr[1:5, 2:4]) - 花式索引 (Fancy Indexing): 使用整数数组进行索引
- 布尔索引: 使用布尔数组进行筛选(如
arr[arr > 0])
第 3 章:NumPy 的核心机制:广播
- 什么是广播? (不同形状的数组之间进行算术运算的规则)
- 广播的规则: 对齐维度、从后向前比较、维度为 1 时可以扩展
- 广播的应用: 实现高效的向量化计算
第 4 章:通用函数
- 什么是 UFunc? (对数组中所有元素进行操作的函数)
- 数学运算:
np.add(),np.subtract(),np.multiply(),np.divide(),np.power() - 三角函数:
np.sin(),np.cos(),np.tan() - 比较函数:
np.maximum(),np.minimum(),np.where() - 统计函数:
np.sum(),np.mean(),np.std(),np.var(),np.max(),np.min()
第 5 章:数组操作与计算
- 重塑数组:
reshape(),ravel()/flatten(),T(转置) - 合并数组:
vstack()(垂直堆叠),hstack()(水平堆叠),concatenate() - 分割数组:
split(),hsplit(),vsplit() - 重复与平铺:
repeat(),tile() - 排序:
sort(),argsort()(返回排序后的索引) - 文件 I/O:
np.save(),np.load(),np.savetxt(),np.loadtxt()
第 6 章:进阶主题
- 随机数生成:
np.random模块 - 线性代数:
np.dot()(矩阵乘法),np.linalg.inv()(求逆),np.linalg.eig()(特征值) - 掩码数组: 处理无效或缺失数据
- 结构化数组: 处理异构数据(类似数据库表)
如何高效学习 NumPy (结合 PDF 和实践)
仅仅阅读 PDF 是不够的,NumPy 是一门“做”出来的技术。

- 边看边敲: 将 PDF 中的所有代码示例亲手在 Jupyter Notebook 或 VS Code 中敲一遍,并修改参数观察结果变化。
- 动手练习: 不要只满足于书上的例子,尝试用 NumPy 解决一些小问题,
- 创建一个 10x10 的矩阵,并设置其对角线元素为 1。
- 生成一个 1000 个随机数的数组,并计算其均值、标准差,同时找出所有大于 1.5 倍标准差的值。
- 模拟两个班级的考试成绩,比较哪个班级的平均分更高。
- 阅读源码: 当你对某个函数不熟悉时,使用
np.function_name??(在 Jupyter 中) 查看其文档字符串,了解其用法和参数。 - 结合项目学习: 将 NumPy 的学习融入到你的小项目中,如果你在做一个数据分析项目,就尝试用 NumPy 来处理数据,而不是用 Python 的原生循环。
| 资源名称 | 特点 | 适合人群 | 获取方式 |
|---|---|---|---|
| NumPy 官方文档 | 权威、全面、最新 | 所有学习者,特别是进阶者 | 官网在线阅读 |
| Python Data Science Handbook | 实战、深入浅出、图文并茂 | 初学者和中级数据科学爱好者 | GitHub 仓库 |
| 利用 Python 进行数据分析 | 实用、接地气、结合 Pandas | 数据分析初学者和从业者 | 图书馆或付费电子版 |
| 廖雪峰 NumPy 教程 | 清晰、简洁、中文友好 | 国内 Python 初学者 | 官网在线阅读 |
建议学习路径:
- 初学者: 从 廖雪峰的教程 或 《Python Data Science Handbook》 的 NumPy 章节入手,建立直观认识。
- 进阶: 阅读 NumPy 官方文档,深入理解每个函数和高级特性。
- 实践: 在整个学习过程中,坚持 动手敲代码 和 做小练习,将知识转化为技能。
