趋近智
Python 的 NumPy 库是进行机器学习 (machine learning)任务中向量 (vector)运算的常用工具。提供实际例子,帮助你熟练地在代码中进行这些向量运算。
首先,请确保你已安装 NumPy 并将其导入。通常的做法是将其导入为别名 np。
import numpy as np
如前所述,我们在 NumPy 中使用一维数组来表示向量。让我们创建几个向量来进行操作。
# 创建两个向量
v = np.array([1, 2, 3])
w = np.array([4, 5, 6])
print("向量 v:", v)
print("向量 w:", w)
这创建了两个向量: 和 。
在 NumPy 中进行向量加法或减法很简单,并且是按元素执行的,如同其数学定义一样。
# 向量加法
vector_sum = v + w
print("v + w =", vector_sum)
# 向量减法
vector_diff = v - w
print("v - w =", vector_diff)
输出显示了 和 的结果。NumPy 会自动处理按元素进行的运算。
将向量 (vector)乘以标量(单个数字)也很简单。向量的每个元素都将乘以该标量。
# 定义一个标量
s = 2
# 标量乘法
scaled_v = s * v
print(f"{s} * v =", scaled_v)
scaled_w = w * 0.5
print(f"0.5 * w =", scaled_w)
这里,向量 v 乘以 2,结果为 。向量 w 乘以 0.5。
NumPy 的 linalg 子模块有计算向量范数的功能。最常用的范数是 范数(欧几里得距离)和 范数(曼哈顿距离)。
向量 的 范数计算方式如下:
范数的计算方式如下:
# 计算 L2 范数(默认)
norm_v_l2 = np.linalg.norm(v)
print(f"v 的 L2 范数: {norm_v_l2:.4f}") # 格式化为4位小数
# 计算 L1 范数
norm_v_l1 = np.linalg.norm(v, ord=1)
print(f"v 的 L1 范数: {norm_v_l1}")
# 计算 w 的 L2 范数
norm_w_l2 = np.linalg.norm(w)
print(f"w 的 L2 范数: {norm_w_l2:.4f}")
# 计算 w 的 L1 范数
norm_w_l1 = np.linalg.norm(w, ord=1)
print(f"w 的 L1 范数: {norm_w_l1}")
np.linalg.norm 函数默认计算 范数。要计算 范数,我们需指定 ord=1。
对于 : 范数 范数
代码输出与这些计算结果相符。
两个向量 (vector) 和 的点积计算方式如下:
NumPy 有多种方法来计算点积。
# 方法 1:使用 np.dot()
dot_product_np_dot = np.dot(v, w)
print(f"使用 np.dot(v, w) 的点积: {dot_product_np_dot}")
# 方法 2:使用 @ 运算符(Python 3.5+ 推荐)
# 此运算符专门用于矩阵/向量乘法
dot_product_at = v @ w
print(f"使用 v @ w 的点积: {dot_product_at}")
# 方法 3:使用 NumPy 数组的 .dot() 方法
dot_product_method = v.dot(w)
print(f"使用 NumPy 数组的 .dot() 方法的点积: {dot_product_method}")
对于 和 的点积,这三种方法都得到相同的结果:
在现代 Python 代码中,@ 运算符常常更受青睐,因为它清晰地将点积与按元素乘法(*)区分开来。
本动手实践部分演示了如何将我们学习的向量运算转化为可运行的 NumPy 代码。你现在可以创建向量、进行加法、缩放、测量其长度并计算点积。这些运算是许多机器学习 (machine learning)算法的基本组成部分。在接下来的章节中,我们会将这些概念扩展到矩阵。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造