就像你可以对单个数字进行加减一样,你也可以对矩阵进行类似操作。矩阵加法和减法是核心运算,它们是逐元素进行的。你可以将其看作是组合或比较两个结构完全相同的数据集(以矩阵形式表示)。规则:维度匹配在对两个矩阵进行加减运算之前,它们必须满足一个重要条件:它们必须具有完全相同的维度。这意味着它们必须具有相同的行数和列数。与加减单个数字类似,你可以对矩阵执行类似操作。矩阵加减法是逐元素进行的基础运算。当组合或比较两个形状完全相同的数据集(表示为矩阵)时,会用到此操作。例如,你可以将一个 $2 \times 3$ 矩阵与另一个 $2 \times 3$ 矩阵相加。但是,你不能将一个 $2 \times 3$ 矩阵与一个 $3 \times 2$ 矩阵相加,也不能将一个 $2 \times 2$ 矩阵与一个 $2 \times 3$ 矩阵相加。如果形状不匹配,则该运算是未定义的。考虑以下矩阵: $$ A = \begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \ 7 & 8 \end{bmatrix}, \quad C = \begin{bmatrix} 9 & 10 & 11 \ 12 & 13 & 14 \end{bmatrix} $$你可以计算 $A + B$,因为它们都是 $2 \times 2$ 矩阵。 你不能计算 $A + C$,因为 $A$ 是 $2 \times 2$ 而 $C$ 是 $2 \times 3$。它们的维度不同。执行加法运算矩阵加法涉及将两个矩阵的对应元素相加。如果你有两个具有相同维度的矩阵 $A$ 和 $B$,它们的和 $C = A + B$ 是一个矩阵,其中每个元素 $C_{ij}$ 是元素 $A_{ij}$ 和 $B_{ij}$ 的和。数学上,这被定义为: $$ C_{ij} = A_{ij} + B_{ij} $$让我们将前面例子中的矩阵 $A$ 和 $B$ 相加: $$ A = \begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \ 7 & 8 \end{bmatrix} $$它们的和 $C = A + B$ 计算如下: $$ C = \begin{bmatrix} 1+5 & 2+6 \ 3+7 & 4+8 \end{bmatrix} = \begin{bmatrix} 6 & 8 \ 10 & 12 \end{bmatrix} $$ 结果矩阵 $C$ 中的每个元素只是矩阵 $A$ 和 $B$ 中相同位置元素的和。执行减法运算矩阵减法遵循与加法相同的原则:你减去对应元素。同样,矩阵必须具有完全相同的维度。如果 $D = A - B$,那么每个元素 $D_{ij}$ 的计算方式如下: $$ D_{ij} = A_{ij} - B_{ij} $$使用相同的矩阵 $A$ 和 $B$: $$ A = \begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \ 7 & 8 \end{bmatrix} $$它们的差 $D = A - B$ 是: $$ D = \begin{bmatrix} 1-5 & 2-6 \ 3-7 & 4-8 \end{bmatrix} = \begin{bmatrix} -4 & -4 \ -4 & -4 \end{bmatrix} $$ 注意,与普通数字减法不同,矩阵减法 $A - B$ 通常与 $B - A$ 不同。矩阵加法的性质矩阵加法与标量加法具有一些熟悉的性质:交换律: $A + B = B + A$结合律: $(A + B) + C = A + (B + C)$减法与标量减法一样,不满足交换律(除非 $A=B$,否则 $A - B \neq B - A$)也不满足结合律。NumPy实现NumPy 使用标准的 + 和 - 运算符使得矩阵加法和减法变得简单。只要数组形状(维度)兼容,NumPy 就会自动执行逐元素运算。首先,让我们将示例矩阵 $A$ 和 $B$ 创建为 NumPy 数组:import numpy as np # 定义矩阵 A A = np.array([[1, 2], [3, 4]]) # 定义矩阵 B B = np.array([[5, 6], [7, 8]]) print("矩阵 A:\n", A) print("矩阵 B:\n", B)现在,让我们将它们相加:# 矩阵 A 和 B 相加 C = A + B print("矩阵 C (A + B):\n", C)这将输出:Matrix C (A + B): [[ 6 8] [10 12]]同样,对于减法:# 矩阵 A 减去矩阵 B D = A - B print("矩阵 D (A - B):\n", D)这将输出:Matrix D (A - B): [[-4 -4] [-4 -4]]处理不兼容的维度如果你尝试使用 NumPy 对形状不兼容的矩阵进行加减运算会怎样?让我们尝试将我们的 $2 \times 2$ 矩阵 $A$ 与一个 $2 \times 3$ 矩阵 $C$ 相加:# 定义矩阵 C (不同形状) C_incompatible = np.array([[9, 10, 11], [12, 13, 14]]) print("矩阵 A:\n", A) print("矩阵 C_incompatible:\n", C_incompatible) try: result = A + C_incompatible except ValueError as e: print("\n添加 A 和 C_incompatible 时出错:", e) NumPy 会引发 ValueError,因为形状不匹配,无法进行逐元素加法:Matrix A: [[1 2] [3 4]] Matrix C_incompatible: [[ 9 10 11] [12 13 14]] Error adding A and C_incompatible: operands could not be broadcast together with shapes (2,2) (2,3)The term "broadcast" refers to a more advanced NumPy功能,用于根据特定规则处理不同形状的数组,但对于基本的矩阵加法和减法,形状必须完全匹配。矩阵加法和减法相对简单,但它们是后续复杂运算的起点。它们可能出现在组合或比较数据集,或在某些机器学习计算中生成中间结果时。