趋近智
在对两个矩阵进行算术运算之后,下一个基本操作是用一个数对整个矩阵进行缩放。这称为矩阵与标量乘法,其工作原理与向量与标量乘法完全相同。此操作涉及取一个标量(一个数),然后将矩阵中的每一个元素都乘以该标量。
设想你有一个以矩阵表示的灰度图像,其中每个元素代表一个像素的亮度值。如果你想让整个图像的亮度增加一倍,你只需将每个像素的值乘以2。这是一个关于矩阵与标量乘法的很好的类比;你正在对整个数值网格进行均匀缩放。
如果我们有一个矩阵 A 和一个标量 c,它们的乘积写作 cA。结果是一个与 A 具有相同维度的新矩阵,其中每个元素是原始元素与该标量的乘积。
形式上,如果 B=cA,那么 B 中第 i 行第 j 列的元素由以下式子给出:
bij=c×aij此操作是逐元素执行的,因此计算起来简单直接。下面的图示通过一个具体例子说明了此过程。
标量
3乘以其右侧矩阵的每个元素,得到一个新矩阵,其中每个值都按3的倍数进行了缩放。
让我们演练上面例子的计算过程。给定矩阵 A 和标量 c=3:
A=[125−3]乘积 3A 的计算方式如下:
3A=3×[125−3]=[3×13×23×53×−3]=[3615−9]矩阵与标量乘法在机器学习算法中经常出现,通常以不显眼但作用明显的方式。
正如你可能想到的,在NumPy中执行此操作简单直观。你可以在NumPy数组(我们的矩阵)和标量之间使用标准乘法运算符 *。NumPy会自动为你处理逐元素乘法。
以下是在Python中执行我们示例中相同计算的方法:
import numpy as np
# 定义我们的矩阵 A
A = np.array([
[1, 5],
[2, -3]
])
# 定义我们的标量 c
c = 3
# 执行标量乘法
B = c * A
print("原始矩阵 A:")
print(A)
print("\n标量 c:", c)
print("\n结果 c * A:")
print(B)
输出:
Original Matrix A:
[[ 1 5]
[ 2 -3]]
Scalar c: 3
Result c * A:
[[ 3 15]
[ 6 -9]]
NumPy代码的输出与我们的手动计算结果完全吻合。NumPy 能够无需显式循环,高效地在整个数组上执行这些操作,这一特性被称为 广播 (broadcasting),它对编写简洁高效的Python数值代码很基本。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造