2.1 KiB
2.1 KiB
如何在 Python 中实现矩阵相乘
在 Python 和大多数其他 OOP 编程语言中,将两个数相乘是一个非常简单的过程。然而,当你试图将两个矩阵相乘时,事情就变得有点复杂了。如你所知,矩阵基本上就是一个嵌套列表,或者是另一个列表中的多个列表。使用矩阵时,主列表中的每个列表都可以视为一行,行中的每个值都可以视为一列。矩阵可能是这样的:
x = [[4, 3], [88, 7], [56, 31]]
上例中的矩阵有三行,每行有两列。
如果你想将两个矩阵(x 和 y)相乘,你需要确保 x 中的列数等于 y 中的行数,否则这个等式将无法正常工作。出于本教程的考虑,让我们将两个各有三行、三列的矩阵相乘,即 3x3 矩阵。请记住,当您将两个矩阵相乘时,得到的矩阵的列数将与等式中最大的矩阵的列数一样多,因此,例如,如果您将 3×3 乘以 3×4,得到的矩阵将是 3×4。
出于本教程的目的,我们将 3x3 乘以 3x3。让我们看看下面的例子,看看它是如何工作的:
X = [[34,1,77],
[2,14,8],
[3 ,17,11]]
Y = [[6,8,1],
[9,27,5],
[2,43,31]]
result = [[0,0,0],
[0,0,0],
[0,0,0]]
for i in range(len(X)):
for j in range(len(Y[0])):
for k in range(len(Y)):
result[i][j] += X[i][k] * Y[k][j]
for r in result:
print(r)
在上面的例子中,我们首先要定义我们的矩阵。然后,我们需要定义一个结果矩阵,它将表示包含我们方程的答案的矩阵。因为我们的两个矩阵是 3x3,所以我们的结果矩阵也是 3x3。接下来,我们遍历 x 矩阵的行,然后是 y 矩阵的列(这是使用 y[0]完成的),最后遍历 y 矩阵的行。然后执行算术运算。
上面示例的输出如下所示:
r =[[367, 3610, 2428], [154, 738, 320], [193, 956, 429]]
这些基本信息应该足以让你自己开始学习矩阵乘法。一旦你掌握了像矩阵一样的乘法,一定要挑战自己,尝试那些列数和行数不相等的乘法。