矩阵相加 / 矩阵相乘(详解版)

简介: 矩阵相加 / 矩阵相乘(详解版)

矩阵相加:


#j_m的作用是将列表转换成矩阵的形式
def j_m(m):
    for i in range(len(m)):           # 取0、1、2(至列表中列表的个数,用len()函数计算长度)
        for j in range(len(m[i])):          #取0、1、2(至列表中第一个列表的长度)
            print(m[i][j], end=" ")   #依次输出第i个列表中的第j个元素,每个末尾空一格
        print("")                           #每取完一个列表进行换行,准备输出下一个列表的那一行
m1 = [[3, 2, 2], [5, 3, 7], [2, 1, 1]]    #第一个矩阵
m2 = [[1, 2, 6], [1, 6, 7], [9, 2, 1]]           #第二个矩阵
j_m(m1)                                   #调用函数将第一个矩阵的列表变成实际矩阵形式并打印
print("------------")                            #打印分隔符
j_m(m2)                                   #调用函数将第二个矩阵的列表变成实际矩阵形式并打印
print("------------")                            #打印分隔符
t = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]                #创建一个由0组成的矩阵用于储存相加结果
for row in range(len(m1)):                       
    for col in range(len(m2)):                            #m1 m2对应元素进行相加
        t[row][col] = m1[row][col] + m2[row][col]   #将结果储存到t中,此时t仍为列表形式
j_m(t)                                                    #调用函数将t结果变成矩阵形式


运行结果:


3 2 2 
5 3 7 
2 1 1 
------------
1 2 6 
1 6 7 
9 2 1 
------------
4 4 8 
6 9 14 
11 3 2 


矩阵相乘:


#c_m的作用是将列表转换成矩阵的形式
def c_m(m):
    for i in range(len(m)):          # 取0、1、2(至列表中列表的个数,用len()函数计算长度)
        for j in range(len(m[i])):        #取0、1、2(至列表中第一个列表的长度)
            print(m[i][j], end=" ")  #依次输出第i个列表中的第j个元素,每个末尾空一格
        print("")                         #每取完一个列表进行换行,准备输出下一个列表的那一行
m1 = [[3, 2, 2], [5, 3, 7], [2, 1, 1]]    #第一个矩阵
m2 = [[1, 2, 6], [1, 6, 7], [9, 2, 1]]           #第二个矩阵
c_m(m1)                                   #调用函数将第一个矩阵的列表变成实际矩阵形式并打印
print("------------")                            #打印分隔符
c_m(m2)                                   #调用函数将第二个矩阵的列表变成实际矩阵形式并打印
print("------------")                            #打印分隔符
result = []                               #创建一个空列表用于储存结果
for row in range(len(m1)):
    rr = []                                   #创建每一行所在的空列表
    for col in range(len(m2[0])):         
        t = 0
        for k in range(len(m2)):
            t = t + m1[row][k] * m2[k][col]     #矩阵相乘的运算法则计算每个数字结果并赋值给t
        rr.append(t)                       #将元素储存在当前行所在列表中
    result.append(rr)                           #将此行结果储存在结果列表中
c_m(result)                                #最后调用函数,将result结果的列表转换成矩阵的形式


运行结果:


3 2 2 
5 3 7 
2 1 1 
------------------
1 2 6 
1 6 7 
9 2 1 
------------------
23 22 34 
71 42 58 
12 12 20 
相关文章
|
API
在阿里云RPA中,你可以使用"SetForegroundWindow"函数来将SAP控件置顶
【2月更文挑战第28天】 在阿里云RPA中,你可以使用"SetForegroundWindow"函数来将SAP控件置顶
356 1
|
消息中间件 NoSQL 关系型数据库
redis事务和异步连接
redis事务和异步连接
280 1
|
C# 图形学 Windows
Winform控件优化之背景透明那些事2:窗体背景透明、镂空穿透、SetStyle、GDI透明效果等
两行代码就能实现Form窗体的(背景)透明效果,它不是Opacity属性的整个窗体透明,`TransparencyKey`实现窗体的透明、窗体中间部分镂空效果...
4593 0
Winform控件优化之背景透明那些事2:窗体背景透明、镂空穿透、SetStyle、GDI透明效果等
中缀表达式转后缀表达式(逆波兰式)
中缀表达式转后缀表达式(逆波兰式)
1551 0
|
分布式计算 Hadoop Shell
熟悉常用的HBase操作
熟悉常用的HBase操作
432 3
熟悉常用的HBase操作
什么是复数
【10月更文挑战第12天】什么是复数
2857 1
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
328 1
|
Serverless 网络安全 Python
Ansible原理和安装
Ansible原理和安装
292 1
|
分布式计算 Java Hadoop
Hadoop找到JAVA_HOME变量,并设置其值
【7月更文挑战第19天】
705 3
|
存储 关系型数据库 MySQL
MySQL 中的事务存储引擎深入解析
【8月更文挑战第31天】
229 0