目录
一、矩阵乘法
1.原理
(自百度)
2.代码实现
L1, L2 = [], [] # L1表示第一个矩阵 L2表示第二个矩阵
L1_row, L12_cr, L2_col = map(int, input().split()) # 输入第一矩阵的行数、第一二矩阵的列行数、第二矩阵的列数
for i in range(L1_row):
nums = list(map(int, input().split()))
L1.append(nums) # 依次输入每行的数字 把第一个矩阵形成二维列表 L1[0]表示该矩阵第一行的数字
for i in range(L12_cr):
nums = list(map(int, input().split()))
L2.append(nums) # 同理 把第二个矩阵形成二维列表
res = [] # 给结果建立一个空列表
for a in range(L1_row):
res.append([]) # 使该列表形成二维列表
for b in range(L2_col):
lis4 = []
lis3 = L1[a] # 通过循环依次获取第一个矩阵的每一行数字
for c in range(L12_cr):
lis4.append(L2[c][b]) # 依次获取第二个矩阵的每一列数字
res_num = sum(map(lambda x, y: x*y, lis3, lis4)) # 矩阵乘法原理
res[a].append(res_num) # 填入 res[0]表示结果矩阵的第一行数字
for j in res:
for i in j:
print(i, end=' ')
print() # 输出
3.运行结果
二、关系矩阵
1.原理
输入均为1或0,与矩阵乘法原理相似,不同的是矩阵乘法中乘法换成逻辑乘,加法换成逻辑加。
2.代码实现
L1, L2 = [], [] # L1表示第一个矩阵 L2表示第二个矩阵
L1_row, L12_cr, L2_col = map(int, input().split()) # 输入第一矩阵的行数、第一二矩阵的列行数、第二矩阵的列数
for i in range(L1_row):
nums = list(map(int, input().split()))
L1.append(nums) # 依次输入每行的数字 把第一个矩阵形成二维列表 L1[0]表示该矩阵第一行的数字
for i in range(L12_cr):
nums = list(map(int, input().split()))
L2.append(nums) # 同理 把第二个矩阵形成二维列表
res = [] # 给结果建立一个空列表
for a in range(L1_row):
res.append([]) # 使该列表形成二维列表
for b in range(L2_col):
lis4 = []
lis3 = L1[a] # 通过循环依次获取第一个矩阵的每一行数字
for c in range(L12_cr):
lis4.append(L2[c][b]) # 依次获取第二个矩阵的每一列数字
r = list(map(lambda x, y: x and y, lis3, lis4))
for i in range(len(r)):
if 1 in r:
d = 1
else:
d = 0
res[a].append(d) # 填入 res[0]表示结果矩阵的第一行数字
for j in res:
for i in j:
print(i, end=' ')
print() # 输出
代码大致与矩阵乘法代码相同