geekdoc-python-zh/docs/pythoncentral/multiply-matrices-python.md

2.1 KiB
Raw Blame History

如何在 Python 中实现矩阵相乘

原文:https://www.pythoncentral.io/multiply-matrices-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]]

这些基本信息应该足以让你自己开始学习矩阵乘法。一旦你掌握了像矩阵一样的乘法,一定要挑战自己,尝试那些列数和行数不相等的乘法。