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

47 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 如何在 Python 中实现矩阵相乘
> 原文:<https://www.pythoncentral.io/multiply-matrices-python/>
在 Python 和大多数其他 OOP 编程语言中,将两个数相乘是一个非常简单的过程。然而,当你试图将两个矩阵相乘时,事情就变得有点复杂了。如你所知,矩阵基本上就是一个嵌套列表,或者是另一个列表中的多个列表。使用矩阵时,主列表中的每个列表都可以视为一行,行中的每个值都可以视为一列。矩阵可能是这样的:
```py
x = [[4, 3], [88, 7], [56, 31]]
```
上例中的矩阵有三行,每行有两列。
如果你想将两个矩阵(x 和 y)相乘,你需要确保 x 中的列数等于 y 中的行数,否则这个等式将无法正常工作。出于本教程的考虑,让我们将两个各有三行、三列的矩阵相乘,即 3x3 矩阵。请记住,当您将两个矩阵相乘时,得到的矩阵的列数将与等式中最大的矩阵的列数一样多,因此,例如,如果您将 3×3 乘以 3×4得到的矩阵将是 3×4。
出于本教程的目的,我们将 3x3 乘以 3x3。让我们看看下面的例子看看它是如何工作的:
```py
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 矩阵的行。然后执行算术运算。
上面示例的输出如下所示:
```py
r =[[367, 3610, 2428], [154, 738, 320], [193, 956, 429]]
```
这些基本信息应该足以让你自己开始学习矩阵乘法。一旦你掌握了像矩阵一样的乘法,一定要挑战自己,尝试那些列数和行数不相等的乘法。