📜  在Python中使用Numpy在单行中将两个矩阵相乘

📅  最后修改于: 2020-04-19 13:09:16             🧑  作者: Mango

矩阵乘法是将两个矩阵作为输入并通过将第一个矩阵的行与第二个矩阵的列相乘而生成单个矩阵的操作。在矩阵乘法中,请确保第一个矩阵的行数应等于第二个矩阵的列数。
示例:将两个矩阵彼此相乘,大小为3×3。

输入:矩阵1 =([1、2、3],
                 [3,4,5],
                 [7,6,4])
      矩阵2 =([5,2,6],
                 [5,6,7],
                 [7,6,4])
输出:[[36 32 32]
          [70 60 66]
          [93 74 100]

在Python中将两个矩阵相乘的方法
1. 使用显式的for循环:这是对矩阵进行相乘的一种简单技术,但是是用于较大输入数据集,则是昂贵方法。在此方法中,我们使用嵌套的for循环来迭代每一行和每一列。
如果matrix1nxm矩阵,而matrix2mxl矩阵

# 输入大小为n x m的两个矩阵
matrix1 = [[12,7,3],
        [4 ,5,6],
        [7 ,8,9]]
matrix2 = [[5,8,1],
        [6,7,3],
        [4,5,9]]
res = [[0 for x in range(3)] for y in range(3)]
# 显式的for循环
for i in range(len(matrix1)):
    for j in range(len(matrix2[0])):
        for k in range(len(matrix2)):
            # resulted matrix
            res[i][j] += matrix1[i][k] * matrix2[k][j]
print (res)

输出:

[[114 160 60]
 [74 97 73]
 [119157112]

在此程序中,我们使用嵌套的for循环来计算结果,该结果将遍历矩阵的每一行和每一列,最后将累加结果中的乘积之和。

2. 使用Numpy:使用Numpy的乘法也称为向量化乘法,其主要目的是减少或消除程序中显着使用for循环的情况,从而使计算速度更快。
Numpy是Python软件包的一个内部版本,用于数组处理和操作。对于较大的矩阵运算,我们使用numpy软件包,它比迭代一种方法快1000倍。
有关Numpy的详细信息,请访问链接

# 我们需要安装numpy才能导入它
import numpy as np
# 输入两个矩阵
mat1 = ([1, 6, 5],[3 ,4, 8],[2, 12, 3])
mat2 = ([3, 4, 6],[5, 6, 7],[6,56, 7])
# 这将返回点积
res = np.dot(mat1,mat2)
# 打印结果矩阵
print(res)

输出:

[[63 320 83]
 [77 484 102]
 [84248117]]

在上面的示例中,我们使用了点积,在数学上,点积是代数运算,它取两个大小相等的向量并返回一个数字。通过乘以相应的条目并将这些乘积相加来计算结果。