第5章 Python 编程:动手的起点
前面四章,我们一直在”纸上谈兵”:认识向量、矩阵、导数、概率,还学会了让 AI 学会东西的梯度下降。从这一章开始,请打开电脑,跟着敲下真正的代码。别怕,Python 是为新手设计的语言 - 它像英语一样好读,而且 AI 世界几乎人人都用它。半小时后,你就能亲手写出第一个会”学习”的程序。
5.1 为什么学 AI 用 Python
编程语言有很多种:C、Java、JavaScript……但如果你想学 AI,Python 几乎是所有人的共同选择。原因有三条:
- 生态最全。AI 需要的每个环节都有现成的”轮子”:NumPy 算矩阵、Matplotlib 画图、scikit-learn 跑机器学习、PyTorch 训深度学习模型。这些工具都叫”库”,装好之后就像给 Python 插上了各种功能插件 - 你不需要自己造轮子,拿来就能用。
- 语法像英语。Python 读起来就像在念句子:
print("你好")就是把”你好”打印出来;用缩进代替花括号,还”强迫”你把代码写整齐,对零基础的人特别友好。 - 社区最大。全世界几百万人在用 Python 写 AI,你遇到的任何报错,几乎都能在网上搜到现成答案。
一句话总结:学 AI 选 Python,就像学英语选全球通用语 - 资料最多、同伴最多、最不容易半路放弃。
类比:Python 是”乐高底座”
Python 本身很朴素,但装上不同”积木”(库)后就能拼出任何东西:装 NumPy 变成数学计算器,装 Matplotlib 变成画图板,装 PyTorch 变成深度学习平台。你只需要学会底座怎么用,以及怎么把积木拼上去。
5.2 半小时语法速成
别把编程想得太神秘。程序就是”按顺序执行的一串指令”,和菜谱没什么两样。你只需要认识六样东西:变量、列表、字典、for 循环、if 判断、函数。
变量就是给数据起名字:age = 18 的意思是”把 18 存进名字叫 age 的盒子里”。列表是一队排好队的数据,从 0 开始编号;字典是”按名字查值”的小本子 - 这两个结构几乎装下了 AI 里所有常见的数据。
for 循环让同一段代码重复执行,比如把列表里的分数挨个打印出来;if 判断让程序”看情况办事”,比如年龄到了 18 才打印”成年了”;函数则把一段逻辑装进”盒子”、起个名字,以后随时调用。先不用背,跟着下面的代码敲一遍、运行一遍,比读十遍都管用。
# 变量:给数据起个名字,随时可以改
age = 18 # 整数
price = 3.5 # 小数
name = "小明" # 文字要加引号
# 列表:一队数据,从 0 开始编号
scores = [90, 85, 78]
print(scores[0]) # 第 1 个 → 90
print(scores[2]) # 第 3 个 → 78
# 字典:按"名字"找"值"
me = {"名字": "小明", "年龄": 18}
print(me["名字"]) # 小明
# for 循环:把列表里的元素挨个处理一遍
for s in scores:
print(s) # 依次打印 90、85、78
# if 判断:让程序"看情况"办事
if age >= 18:
print("成年了")
else:
print("未成年")
# 函数:把一段逻辑装进"盒子",反复调用
def greet(name):
return "你好," + name + "!"
print(greet("AI")) # 你好,AI!
新手提示:缩进很重要
Python 靠缩进(行首的空格)区分”哪些行属于循环”。如果报错说 IndentationError,八成是缩进不对 - 把光标放到上一行末尾按回车,让缩进对齐就好。上面几段代码建议在同一个 Jupyter 里连着运行,这样 scores 和 age 会在后面继续使用。
5.3 NumPy:Python 的矩阵计算器
还记得第 1 章吗?AI 眼里的数据就是向量和矩阵,矩阵乘法是”交通枢纽”。可如果每次都要写一堆循环去算,人早就疯了。NumPy 就是 Python 的矩阵计算器:它把向量、矩阵装进”数组”里,一次算一整片。
np.array([1, 2, 3]) 创建一维数组,就像第 1 章的向量;np.array([[1, 2], [3, 4]]) 创建二维数组,就像矩阵。.shape 告诉你它是几行几列 - 调程序时几乎是每天都要用的。数组的运算特别省心:a + b 直接对应位置相加,不用写任何循环;M * 10 让每个数都乘 10。甚至形状不同的数组也能一起算 - 这叫广播,小的那个会自动”拉伸”成大的形状,就像数字 10 自动变成 [10, 10, 10]。
import numpy as np # 导入 NumPy,起个小名 np
a = np.array([1, 2, 3]) # 一维数组,像第1章的向量
b = np.array([10, 20, 30])
print(a + b) # 对应位置相加 → [11 22 33]
M = np.array([[1, 2], [3, 4]]) # 二维数组,像矩阵
print(M.shape) # (2, 2):2 行 2 列
print(M * 10) # 每个数都乘 10(广播)
记住这个句式
看到 np.array、.shape、np.dot 这类”np.”开头的代码,就明白:这是在用 NumPy 这个矩阵计算器。第 1 章的 W·x(矩阵乘向量)在 Python 里写出来就是 np.dot(W, x) - 纸上谈兵和动手,在这里终于连上了。
5.4 Matplotlib:把数据画出来
一堆数字摆在眼前,你很难看出规律;画成图,一眼就有感觉 - 这就是”看到数据才有感觉”。Matplotlib 是 Python 最常用的画图工具,三种图最常用:
- 折线图看趋势。比如训练时损失 loss 一路下降,说明模型正在变好。
- 散点图看关系。比如身高和体重之间有没有关联、成什么方向。
- 直方图看分布。比如全班成绩大多集中在哪个分数段。
用法非常简单:plt.plot 画折线、plt.scatter 画散点、plt.hist 画直方图,再用 plt.xlabel 给横轴起名,最后 plt.show() 把图画出来。以后你训练模型时,几乎每一步都要画图来”亲眼看看”数据发生了什么。
import matplotlib.pyplot as plt # 画图工具
import numpy as np
x = np.array([1, 2, 3, 4, 5]) # 横轴:第几天
y = np.array([2, 4, 1, 8, 6]) # 纵轴:学习小时数
plt.plot(x, y, "o-") # 折线图,点上画圈
plt.xlabel("天数")
plt.ylabel("学习时间(小时)")
plt.title("我的学习曲线")
plt.show() # 弹出窗口显示图片
别急,图会弹出来
在 Jupyter 里运行 plt.show() 后,图会直接显示在代码下方;在普通脚本里运行,则会弹出一个窗口,关掉窗口程序才会继续往下走。
5.5 你的第一个”AI 程序”
激动人心的时刻到了。我们要写一个真正会”学习”的程序:一个最简单的感知机,它只有三个样本,却能在训练中自己”悟出”一条直线,把两类点分开。
思路就来自第 4 章:给每个输入一个权重 w,算加权和再加偏置,得到分数;分数大于 0 就猜 1,否则猜 0。猜错了怎么办?沿着错误的方向调一调 w 和 b - 这就是梯度下降最简单的一次应用。
代码里的三个样本,前两个在左下方(标签 0),最后一个在右上方(标签 1)。训练 20 轮后,程序会打印出学到的 w 和 b,它们对应一条直线:w·x + b = 0。把这条直线画出来,正好把两类点分开。先别纠结每个细节,把它敲进 Jupyter 跑起来,亲眼看到它”学会了” - 那种感觉,和读十页书完全不一样。
import numpy as np
# 3 个样本:前两个是 0 类,最后一个是 1 类
X = np.array([[1, 2], [2, 1], [4, 4]])
y = np.array([0, 0, 1])
w = np.zeros(2) # 权重从 0 开始
b = 0.0 # 偏置
lr = 0.1 # 学习率
for _ in range(20): # 训练 20 轮
for i in range(3): # 每轮过 3 个样本
score = np.dot(X[i], w) + b # 加权求和打分
pred = 1 if score > 0 else 0 # 分>0 猜 1
e = y[i] - pred # 猜错才更新
w += lr * e * X[i]
b += lr * e
print(w, b) # 学到的直线参数
感知机的三步循环
打分(score = w·x + b)→ 判断(分数 > 0 猜 1,否则猜 0)→ 纠错(猜错了就按学习率调整 w 和 b)。这三步,就是第 4 章梯度下降和后面神经网络训练的共同骨架。
5.6 搭建你的学习环境
工欲善其事,必先利其器。你只需要装好三样东西,就能愉快地写 Python:Anaconda 是一个”全家桶” - 装它一个,Python 和 NumPy、Matplotlib 等常用库就都齐了,省去一个个安装的麻烦;Jupyter Notebook 是”会记住每一步的草稿纸”,一格一格写代码、运行、看结果,特别适合学习;VS Code 是正经的代码编辑器,写大工程时用,还带中文提示和报错标红。
新手推荐路线:先装 Anaconda(一步到位),用自带的 Jupyter 开始学;熟悉之后想写正式项目,再装 VS Code。下表是安装要点,跟着做就行。
| 工具 | 它是干嘛的 | 安装要点 | 什么时候用 |
|---|---|---|---|
| Anaconda | 一键装好 Python + 常用库(NumPy、Matplotlib 等) | 官网下载安装包,一路”下一步”;装完在开始菜单找 Anaconda Prompt | 第一步就装它,一劳永逸 |
| Jupyter Notebook | 一格一格写代码、跑代码的”草稿纸” | Anaconda 自带;在 Anaconda Prompt 输入 jupyter notebook 回车 |
学习、写小代码、画图 - 新手主力 |
| VS Code | 功能强大的代码编辑器,带提示和报错标红 | 官网下载安装;装 Python 扩展;第一次运行先选 Python 解释器 | 写正式项目、脚本,配合 Git 用 |
遇到报错别慌:这是程序在跟你说话
报错不是失败,而是电脑在告诉你”这里出问题了”。每个程序员一天都要撞上几十个报错。记住三步:① 看最后一行错误信息,它通常最有用;② 把错误原文(比如 NameError: name 'x' is not defined)复制到搜索引擎;③ 照着改代码、重跑。靠自己的力量改对一个报错,比背十页书都记得牢。
本章要点
- Python 是 AI 的首选语言:生态全、像英语、社区大。
- 语法速成六件套:变量、列表、字典、for、if、函数 - 会这六样,就能看懂大部分 AI 代码。
- NumPy 是矩阵计算器:数组、shape、运算、广播;第 1 章的 W·x 在代码里就是
np.dot(W, x)。 - Matplotlib 让数据”看得见”:折线看趋势、散点看关系、直方图看分布。
- 感知机的三步循环(打分 → 判断 → 纠错)就是你第一个 AI 程序的核心。
- 环境三件套:Anaconda + Jupyter + VS Code;报错不可怕,按”三步排查法”走。
衔接 · 下一站
恭喜!你现在已经能看懂、能写出最基础的 Python,还亲手跑了一个会”学习”的感知机。下一站是第 6 章《机器学习基础:AI 怎么学会》 - 那里会用 Python 代码把”训练、测试、评估”完整串起来。想提前读主书《人工智能理论与实践》的感知机、神经网络章节?你已经有读代码的基础了,配合李沐的《动手学深度学习》边读边敲,效果最佳。




