📜  Python程序将两个矩阵相乘(1)

📅  最后修改于: 2023-12-03 15:34:31.720000             🧑  作者: Mango

Python程序将两个矩阵相乘

矩阵相乘是线性代数中的一个重要操作,也是各种机器学习或数据处理算法的基石之一。Python是一门非常适合进行数学计算的语言,因此用Python编写矩阵相乘的程序是非常方便的。

概述

矩阵相乘是指将两个矩阵相乘得到一个新的矩阵,新矩阵中的每个元素由原矩阵中相应元素的乘积求和得到。矩阵相乘的前提是两个矩阵的列数和行数相同。如果矩阵 A 的列数为 m,行数为 n,矩阵 B 的列数为 n,行数为 p,那么它们的乘积 C 的列数为 p,行数为 m。

矩阵相乘的具体实现比较简单。假设要计算矩阵 A 和 B 的乘积 C,那么只需要按以下公式进行计算:

C[i][j] = sum(A[i][k] * B[k][j]) for k in range(n)

其中,i 是 C 矩阵的行数,j 是 C 矩阵的列数,k 是 A 矩阵和 B 矩阵相同的维度数。

代码实现

下面是用 Python 实现矩阵相乘的代码:

def matrix_multiplication(A, B):
    """
    矩阵 A 与矩阵 B 相乘得到矩阵 C。
    :param A: 矩阵 A
    :param B: 矩阵 B
    :return: 矩阵 C
    """
    m1, n1 = len(A), len(A[0])
    m2, n2 = len(B), len(B[0])

    if n1 != m2:
        raise ValueError("无法进行矩阵相乘,因为矩阵 A 的列数不等于矩阵 B 的行数。")

    C = [[0] * n2 for _ in range(m1)]

    for i in range(m1):
        for j in range(n2):
            for k in range(n1):
                C[i][j] += A[i][k] * B[k][j]

    return C

该方法接受两个二维数组 A 和 B 作为参数,返回一个表示它们乘积的二维数组 C。如果 A 和 B 无法相乘,比如 A 的列数不等于 B 的行数,该方法会抛出 ValueError 异常。

使用示例

下面是使用该方法进行矩阵相乘的示例:

A = [
    [1, 2],
    [3, 4],
    [5, 6]
]

B = [
    [7, 8, 9],
    [10, 11, 12]
]

C = matrix_multiplication(A, B)

print("A = ")
for row in A:
    print(row)

print("B = ")
for row in B:
    print(row)

print("C = ")
for row in C:
    print(row)

上述示例中,我们创建了两个矩阵 A 和 B,并将它们传递给我们实现的 matrix_multiplication() 方法。然后打印了 A、B 和 C 三个矩阵的值。输出结果如下:

A = 
[1, 2]
[3, 4]
[5, 6]
B = 
[7, 8, 9]
[10, 11, 12]
C = 
[27, 30, 33]
[61, 68, 75]
[95, 106, 117]

矩阵 C 的值符合预期,说明该方法是正确的。

小结

Python 程序将两个矩阵相乘非常容易。我们只需要用一个双层循环遍历两个矩阵中的元素,并计算它们的乘积和。这个方法还能被扩展到更高维度的张量相乘中。如果你需要实现更复杂的数学计算,Python 是一门非常值得尝试的语言。