Python 编写一个程序实现矩阵乘法
矩阵乘法是线性代数中的一个基本操作。给定两个矩阵 A 和 B,矩阵乘法的结果是一个新的矩阵 C,其中 C 的每个元素是 A 的对应行与 B 的对应列的点积。假设 A 是一个 m×n 的矩阵,B 是一个 n×p 的矩阵,那么结果矩阵 C 将是一个 m×p 的矩阵。
实例
def matrix_multiply(A, B):
# 获取矩阵 A 和 B 的维度
rows_A = len(A)
cols_A = len(A[0])
rows_B = len(B)
cols_B = len(B[0])
# 检查矩阵 A 的列数是否等于矩阵 B 的行数
if cols_A != rows_B:
raise ValueError("矩阵 A 的列数必须等于矩阵 B 的行数")
# 初始化结果矩阵 C,大小为 rows_A x cols_B
C = [[0 for _ in range(cols_B)] for _ in range(rows_A)]
# 进行矩阵乘法
for i in range(rows_A):
for j in range(cols_B):
for k in range(cols_A):
C[i][j] += A[i][k] * B[k][j]
return C
# 示例矩阵
A = [[1, 2, 3],
[4, 5, 6]]
B = [[7, 8],
[9, 10],
[11, 12]]
# 调用矩阵乘法函数
result = matrix_multiply(A, B)
# 输出结果
for row in result:
print(row)
# 获取矩阵 A 和 B 的维度
rows_A = len(A)
cols_A = len(A[0])
rows_B = len(B)
cols_B = len(B[0])
# 检查矩阵 A 的列数是否等于矩阵 B 的行数
if cols_A != rows_B:
raise ValueError("矩阵 A 的列数必须等于矩阵 B 的行数")
# 初始化结果矩阵 C,大小为 rows_A x cols_B
C = [[0 for _ in range(cols_B)] for _ in range(rows_A)]
# 进行矩阵乘法
for i in range(rows_A):
for j in range(cols_B):
for k in range(cols_A):
C[i][j] += A[i][k] * B[k][j]
return C
# 示例矩阵
A = [[1, 2, 3],
[4, 5, 6]]
B = [[7, 8],
[9, 10],
[11, 12]]
# 调用矩阵乘法函数
result = matrix_multiply(A, B)
# 输出结果
for row in result:
print(row)
代码解析:
matrix_multiply
函数接受两个矩阵 A 和 B 作为输入。- 首先获取矩阵 A 和 B 的维度,并检查矩阵 A 的列数是否等于矩阵 B 的行数,如果不相等则抛出错误。
- 初始化结果矩阵 C,大小为
rows_A x cols_B
,所有元素初始化为 0。 - 使用三重循环进行矩阵乘法计算,外层循环遍历 A 的行,中层循环遍历 B 的列,内层循环计算点积并累加到 C 的对应位置。
- 最后返回结果矩阵 C。
输出结果:
[58, 64] [139, 154]
点我分享笔记