使用NumPy在Python中一行代码实现两个矩阵的乘法


矩阵乘法是一个冗长的过程,需要以某种方式将矩阵每一行和每一列的每个元素相乘并相加。对于矩阵乘法,第一个矩阵的列数必须等于第二个矩阵的行数。结果矩阵的行数等于第一个矩阵的行数,列数等于第二个矩阵的列数。

对于较小的矩阵,我们可以设计嵌套的for循环来求解结果。对于较大的矩阵,我们需要Python中的一些内置功能来处理这个问题。我们将在下面看到这两种方法。

使用for循环

我们取两个维度分别为2x3和3x2(行x列)的矩阵。矩阵乘法的结果是一个2x2矩阵。我们设计了一个嵌套的for循环,用于遍历A的列和B的行,并将这些行和列中值的乘积相加。

示例

 在线演示

#matrix A with 2 rows
A = ([5,10,15],[20,25,30])

#matrix B with 2 columns
B = ([4,8],[12,10],[14,16])

result = [[0 for x in range(2)] for y in range(2)]

for i in range(len(A)):
   # iterate through columns of A
   for j in range(len(B[0])):
      # iterate through rows of B
      for k in range(len(B)):
         result[i][j] += A[i][k] * B[k][j]
for r in result:
   print(r)

输出

运行上面的代码得到以下结果

[350, 380]
[800, 890]

使用NumPy

NumPy有一个名为dot的内置函数,可以执行矩阵乘法。我们的程序代码行数大大减少,语法也更加简单。

示例

 在线演示

import numpy as np

#matrix A
matrix_A = ([5,10,15],[20,25,30])

#matrix B
matrix_B = ([4,8],[12,10],[14,16])
result = np.dot(matrix_A,matrix_B)

# Result
print(result)

输出

运行上面的代码得到以下结果

[[350 380]
[800 890]]

更新于:2020年1月7日

603 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告