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

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

矩阵相加:


#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 数据处理
Flink常见面试问题(附答案)
Apache Flink是开源的流批处理框架,提供低延迟、高吞吐的数据处理。与Hadoop不同,Flink专注于实时数据流。其核心特性包括事件时间和处理时间的概念,事件时间通过水印处理乱序事件。Flink通过检查点实现容错,支持滚动、滑动和会话窗口进行流数据处理。状态后端用于管理应用程序状态,水印用于处理延迟数据。Flink与Kafka集成能保证事件顺序,支持多种连接器如Kafka、JDBC等。其处理延迟数据、乱序事件的能力,以及Exactly-Once语义,使其在大规模数据处理中具有优势。Flink还支持表格API和DataStream API,以及多种容错和性能优化策略。
1153 2
Flink常见面试问题(附答案)
|
消息中间件 NoSQL 关系型数据库
redis事务和异步连接
redis事务和异步连接
255 1
|
C# 图形学 Windows
Winform控件优化之背景透明那些事2:窗体背景透明、镂空穿透、SetStyle、GDI透明效果等
两行代码就能实现Form窗体的(背景)透明效果,它不是Opacity属性的整个窗体透明,`TransparencyKey`实现窗体的透明、窗体中间部分镂空效果...
4407 0
Winform控件优化之背景透明那些事2:窗体背景透明、镂空穿透、SetStyle、GDI透明效果等
中缀表达式转后缀表达式(逆波兰式)
中缀表达式转后缀表达式(逆波兰式)
1261 0
|
12月前
|
缓存 关系型数据库 MySQL
MySQL 索引优化与慢查询优化:原理与实践
通过本文的介绍,希望您能够深入理解MySQL索引优化与慢查询优化的原理和实践方法,并在实际项目中灵活运用这些技术,提升数据库的整体性能。
612 5
|
SQL 分布式计算 Java
E-MapReduce Serverless Spark体验评测
从了解到部署实践,全方位带你体验大数据平台EMR Serverless Spark的魅力。
625 7
E-MapReduce Serverless Spark体验评测
|
数据采集 XML 数据库
使用Python爬取网站数据并进行图像处理
在互联网时代,网站数据是一种宝贵的资源,可以用于分析、挖掘、展示等多种目的。但是,如何从海量的网页中提取我们需要的数据呢?Python是一种强大而灵活的编程语言,它提供了许多用于爬虫和图像处理的库和工具,可以帮助我们实现这一目标。本文将介绍如何使用Python爬取网站数据并进行图像处理的基本步骤和方法。
976 0
使用Python爬取网站数据并进行图像处理
|
JavaScript 前端开发 测试技术
JS都有哪些操作数组的方法
JS都有哪些操作数组的方法
423 3
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
285 1
|
机器学习/深度学习 缓存 PyTorch
异步数据加载技巧:实现 DataLoader 的最佳实践
【8月更文第29天】在深度学习中,数据加载是整个训练流程中的一个关键步骤。为了最大化硬件资源的利用率并提高训练效率,使用高效的数据加载策略变得尤为重要。本文将探讨如何通过异步加载和多线程/多进程技术来优化 DataLoader 的性能。
2209 1