矩阵乘法的Python实现
本文经用Python基本语句和基本数据类型,不使用第三方数学计算来实现矩阵相乘
基本思路:
- 完成矩阵的输入
- 矩阵相乘
矩阵相乘的流程: - 判断矩阵A与B的维度是否匹配,例如A为m行n列,则B为n行m列
- 矩阵相乘的结果是一个新的矩阵,新矩阵中的第i行第j列的值是:矩阵A的第i行与矩阵B的第j列相对应的元素相乘后相加。
代码如下:
'''
@矩阵相乘
@作者:黑喵局长
@日期:2019-03-29
'''
# 定义函数,用于生成矩阵
def matrix():
m = int(input("请输入矩阵的行数:"))
n = int(input("请输入矩阵的列数:"))
# 创建空列表
arr = []
for i in range(m):
arr.append([]) #在空列表中再添加一个空列表
for j in range(n):
x = int(input("请输入:"))
arr[i].append(x) #为内层列表添加元素
return arr
# 调用函数
a = matrix()
b = matrix()
c = []
# if语句,判断矩阵的维度是否匹配
if len(a[0]) == len(b) and len(a) == len(b[0]):
for i in range(len(a)): # 矩阵的行
c.append([])
for j in range(len(b[0])): # 矩阵的列
s = sum(a[i][k] * b[k][j] for k in range(len(b))) # a矩阵的行与b矩阵的列相乘,并求和
c[i].append(s)
print(c)
else:
print("输入的矩阵维度不匹配,本次程序执行结束!")
这个代码是有缺陷的,虽然看起来代码行数不多,但是因为双重for循环,使得代码运行较慢,本文中只适合学习Python基本语句的学习。