趋近智
就像你可以对单个数字进行加减一样,你也可以对矩阵进行类似操作。矩阵加法和减法是核心运算,它们是逐元素进行的。你可以将其看作是组合或比较两个结构完全相同的数据集(以矩阵形式表示)。
在对两个矩阵进行加减运算之前,它们必须满足一个重要条件:它们必须具有完全相同的维度。这意味着它们必须具有相同的行数和列数。
与加减单个数字类似,你可以对矩阵执行类似操作。矩阵加减法是逐元素进行的基础运算。当组合或比较两个形状完全相同的数据集(表示为矩阵)时,会用到此操作。例如,你可以将一个 矩阵与另一个 矩阵相加。但是,你不能将一个 矩阵与一个 矩阵相加,也不能将一个 矩阵与一个 矩阵相加。如果形状不匹配,则该运算是未定义的。
考虑以下矩阵:
你可以计算 ,因为它们都是 矩阵。 你不能计算 ,因为 是 而 是 。它们的维度不同。
矩阵加法涉及将两个矩阵的对应元素相加。如果你有两个具有相同维度的矩阵 和 ,它们的和 是一个矩阵,其中每个元素 是元素 和 的和。
数学上,这被定义为:
让我们将前面例子中的矩阵 和 相加:
它们的和 计算如下:
结果矩阵 中的每个元素只是矩阵 和 中相同位置元素的和。
矩阵减法遵循与加法相同的原则:你减去对应元素。同样,矩阵必须具有完全相同的维度。
如果 ,那么每个元素 的计算方式如下:
使用相同的矩阵 和 :
它们的差 是:
注意,与普通数字减法不同,矩阵减法 通常与 不同。
矩阵加法与标量加法具有一些熟悉的性质:
减法与标量减法一样,不满足交换律(除非 ,否则 )也不满足结合律。
NumPy 使用标准的 + 和 - 运算符使得矩阵加法和减法变得简单。只要数组形状(维度)兼容,NumPy 就会自动执行逐元素运算。
首先,让我们将示例矩阵 和 创建为 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 对形状不兼容的矩阵进行加减运算会怎样?让我们尝试将我们的 矩阵 与一个 矩阵 相加:
# 定义矩阵 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功能,用于根据特定规则处理不同形状的数组,但对于基本的矩阵加法和减法,形状必须完全匹配。
矩阵加法和减法相对简单,但它们是后续复杂运算的起点。它们可能出现在组合或比较数据集,或在某些机器学习 (machine learning)计算中生成中间结果时。
这部分内容有帮助吗?
ndarray对象和标准算术运算符实现矩阵加法和减法。对于实际应用至关重要。© 2026 ApX Machine LearningAI伦理与透明度•