Skip to content

结业考核

这是本书过程化考核的最后一环,由两部分组成:综合项目结业测验。全部完成后,你应当能脱离任何 AI 工具独立使用 NumPy 处理数值数据,并读懂、验证 AI 生成的代码——这正是本书的两个核心目标。

一、综合项目

从下面三个主题中任选一个,独立完成。也可以自拟同等难度的主题,但必须先按 12.6 的审查清单自评。

主题 A:气温数据分析工具

  • 从 CSV 读入 3 个城市 30 天的气温数据(自行生成,混入 2~3 个 ±99 异常值)。
  • 清洗:把异常值替换为 nan。
  • 输出:各城市平均气温、最高气温、气温标准差;找出气温波动最大的城市。
  • 把结果写成带表头的 CSV 报告。

主题 B:图像处理小工具

  • 生成一个 100×100×3 的随机彩色图像(或读入一张真实图片)。
  • 支持:提亮/变暗(加减灰度并 clip)、反色、灰度化(按通道平均)、二值化(阈值处理)。
  • 每个操作封装成一个函数,输入输出都是 ndarray,注意 dtype 溢出问题。
  • 输出处理前后的图像数组范围(min/max)与形状,验证结果合理。

主题 C:蒙特卡洛估算器

  • 用蒙特卡洛方法估算 π(正方形内撒点法)。
  • 分别用 N = 10³、10⁴、10⁵、10⁶ 运行,输出每次的估算值与相对误差。
  • 用固定种子保证可复现;把结果整理成表格(可用 savetxt 保存)。
  • 附加(可选):用同样的方法估算 ∫₀¹ x² dx。

统一验收标准(全部满足才算通过):

标准说明
可运行按 README 或注释说明可一键运行,无语法错误
有注释关键函数有注释,说明「为什么」
有容错空文件、缺失值、异常值不会导致程序崩溃
结构清晰用函数组织代码,没有大段重复
向量化核心运算用数组运算,不写逐元素 Python 循环
通过边界测试常数列、全缺失、极端值下行为正确

二、结业测验

覆盖第 1~12 章知识点,共 15 题,答对 12 题(80%)以上视为通过。

  1. np.array([1, 2, 3]).shape 的结果是?(第 1 章)
    • A. 3
    • B. (3,)
    • C. (1, 3)
    • D. [3]
  2. np.zeros((2, 3)).shape 的结果是?(第 2 章)
    • A. (2, 3)
    • B. (3, 2)
    • C. (6,)
    • D. (2,)
  3. np.arange(2, 10, 2) 的结果是?(第 2 章)
    • A. [2, 4, 6, 8, 10]
    • B. [2, 4, 6, 8]
    • C. [2, 4, 6]
    • D. [2, 3, 4, 5]
  4. np.arange(10)[1:4] 的结果是?(第 3 章)
    • A. [1, 2, 3, 4]
    • B. [1, 2, 3]
    • C. [0, 1, 2]
    • D. [2, 3, 4]
  5. 下列哪种方式得到的是视图(修改它会影响原数组)?(第 3 章)
    • A. a.copy()
    • B. a[1:3]
    • C. np.array(a)
    • D. a.flatten()
  6. np.array([1, 2, 3]) * 2 的结果是?(第 4 章)
    • A. [1, 2, 3, 1, 2, 3]
    • B. [2, 4, 6]
    • C. 2
    • D. 报错
  7. np.array([1, 2, 3, 4, 5]).mean() 的结果是?(第 6 章)
    • A. 15
    • B. 3.0
    • C. 2.5
    • D. 5
  8. a = np.array([[1, 2], [3, 4]]); a.sum(axis=0) 的结果是?(第 6 章)
    • A. [4, 6]
    • B. [3, 7]
    • C. 10
    • D. [1, 2, 3, 4]
  9. 形状 (2, 3)(3,) 的数组相加,结果形状是?(第 7 章)
    • A. (2,)
    • B. (2, 3)
    • C. (3, 2)
    • D. 报错
  10. np.array([1, 2, 3, 4])[(np.array([1, 2, 3, 4]) % 2 == 0)] 的结果是?(第 8 章)
    • A. [1, 3]
    • B. [2, 4]
    • C. [1, 2, 3, 4]
    • D. [False, True, False, True]
  11. np.loadtxt("a.csv", delimiter=",") 读回的数据默认 dtype 是?(第 9 章)
    • A. int64
    • B. float64
    • C. str
    • D. bool
  12. 矩阵乘法应使用哪个运算符?(第 10 章)
    • A. *
    • B. @
    • C. &
    • D. #
  13. 解方程组 2x + y = 5x + 3y = 10,正确写法是?(第 10 章)
    • A. np.linalg.inv(A) * b
    • B. np.linalg.solve(A, b)
    • C. A @ b
    • D. np.dot(A, b)
  14. rng = np.random.default_rng(42) 的作用是?(第 11 章)
    • A. 让随机数更快
    • B. 固定种子,结果可复现
    • C. 让随机数更均匀
    • D. 清除所有随机数
  15. 阅读 AI 生成的 NumPy 代码,正确的态度是?(第 12 章)
    • A. 直接使用并信任
    • B. 理解、验证、修改后再使用
    • C. 一律不用
    • D. 只看注释

三、结业评审

  • 综合项目:对照验收标准逐条自评;如果可能,请另一位同学或老师运行你的程序。
  • 结业测验:15 题答对 12 题以上。
  • 两项都通过,即完成本书全部学习目标。

结业后的下一步

本书覆盖的是 NumPy 核心。之后可以按兴趣深入:

  • 数据分析:pandas(基于 NumPy 的数据表工具)、matplotlib(绘图可视化)
  • 科学计算:scipy(优化、积分、信号处理)
  • 机器学习:scikit-learnPyTorch(底层数据结构都离不开 ndarray)
  • 图像与信号:opencvPIL(第 12 章的图像操作是起点)

无论选哪个方向,记住本书的两条原则:独立写出能跑的向量化代码,读懂并验证别人(包括 AI)写的代码。