0Pricing
Learn AI with Python · 课时

使用 NumPy 进行线性代数运算

使用 np.dot、np.linalg.inv、np.linalg.eig、np.linalg.solve 求解方程组

使用 NumPy 进行线性代数运算 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

NumPy 中的线性代数

NumPy 通过 @ 运算符和 np.linalg 模块提供矩阵运算,这是几乎所有机器学习算法的基础。

使用 @ 进行矩阵乘法

@ 运算符执行真正的矩阵乘法。内部维度必须匹配:(m,k) @ (k,n) 会得到 (m,n)。

import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(A @ B)
# [[19 22]
#  [43 50]]

@ 与 *(重要)

* 是逐元素运算,@ 是矩阵乘法。混淆二者是一个经典错误。

print(A * B)   # element-wise: [[ 5 12]
               #               [21 32]]
print(A @ B)   # matrix product (different result)

np.dot

np.dot 是函数形式。对于二维数组,它等同于 @;对于一维数组,它会计算点积并返回一个标量。

u = np.array([1, 2, 3])
v = np.array([4, 5, 6])
print(np.dot(u, v))   # 1*4 + 2*5 + 3*6 = 32

矩阵逆

np.linalg.inv(A) 会返回逆矩阵,即与 A 相乘后得到单位矩阵的矩阵。只有方阵且非奇异的矩阵才存在逆矩阵。

A = np.array([[4.0, 7.0], [2.0, 6.0]])
Ainv = np.linalg.inv(A)
print(np.round(A @ Ainv, 6))   # identity

行列式

np.linalg.det(A) 会计算行列式。行列式为 0 表示矩阵是奇异矩阵,无法求逆。

print(np.linalg.det(A))   # 10.0  (nonzero -> invertible)

求解线性方程组

要解 A x = b,请优先使用 np.linalg.solve(A, b),而不是计算逆矩阵。这样速度更快,数值稳定性也更好。

A = np.array([[3.0, 1.0], [1.0, 2.0]])
b = np.array([9.0, 8.0])
x = np.linalg.solve(A, b)
print(x)   # [2. 3.]

为什么使用 solve 而不是 inv

计算 inv(A) @ b 会浪费计算量,并放大舍入误差。solve 会直接使用 LU 分解。在实际代码中,请优先使用 solve。

# Avoid:  x = np.linalg.inv(A) @ b
# Prefer: x = np.linalg.solve(A, b)

特征值和特征向量

np.linalg.eig(A) 会返回特征值和特征向量。它们是 PCA、稳定性分析等技术的基础。

A = np.array([[2.0, 0.0], [0.0, 3.0]])
vals, vecs = np.linalg.eig(A)
print(vals)   # [2. 3.]

向量范数和矩阵范数

np.linalg.norm 用于衡量大小。默认情况下,它计算向量的欧几里得范数(L2 范数),从距离计算到正则化都广泛使用。

v = np.array([3.0, 4.0])
print(np.linalg.norm(v))        # 5.0 (sqrt(9+16))
print(np.linalg.norm(v, 1))    # 7.0 (L1 norm)

转置

A.T 会对矩阵进行转置,即交换行和列。它经常出现在正规方程等公式中。

A = np.array([[1, 2, 3], [4, 5, 6]])
print(A.T)
# [[1 4]
#  [2 5]
#  [3 6]]

快速检查

请测试您对线性代数知识的掌握程度。

回顾

线性代数工具箱:

  • 使用 @ / np.dot 进行矩阵乘法和点积(而不是 *)
  • np.linalg.inv、np.linalg.det
  • np.linalg.solve(A, b) 优于求逆
  • 使用 np.linalg.eig 进行特征分解
  • 使用 np.linalg.norm 计算大小,使用 A.T 进行转置

常见问题解答

「使用 NumPy 进行线性代数运算」课时是免费的吗?

是的 — 「使用 NumPy 进行线性代数运算」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「使用 NumPy 进行线性代数运算」这节课中我会学到什么?

使用 np.dot、np.linalg.inv、np.linalg.eig、np.linalg.solve 求解方程组 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「使用 NumPy 进行线性代数运算」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 数组创建与属性
  2. 索引、切片与花式索引
  3. 广播与向量化运算
  4. 使用 NumPy 进行线性代数运算
← 返回 Learn AI with Python