前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|详解矩阵乘法

Python|详解矩阵乘法

作者头像
算法与编程之美
发布2020-03-25 17:37:25
2.5K0
发布2020-03-25 17:37:25
举报

问题描述

矩阵相信大家都知道,是线性代数中的知识,就是一系列数集。顾名思义,数字组成的矩形,例如:

[1 2 3 4

5 67 8

9 1011 ]

现在,我们需要用python编程来实现矩阵的乘法。

输入示例:

2 3 3 4

1 2 3

4 5 6

1 2 3 4

5 6 7 8

9 10 11 12

输出示例:

38 44 50 56

83 98 113 128

注意:输入的第一行分别为两个矩阵的行列数(表示为:N1,M1,N2,M2)。

解决方案

1.矩阵乘法原理

要做矩阵的乘法,首先得搞清楚几点关于矩阵乘法的知识。

只有一个矩阵的列数等于另一个矩阵的行数时,这两个矩阵才能相乘。

矩阵乘法的原理是,一个矩阵的每一行分别与另一个矩阵的每一列的每一个数一一对应相乘再相加,得到的数字就是结果矩阵的中的一个数。

结果矩阵的形状是一个矩阵的行数和另一个矩阵的列数。如A2*3 * B3*4 =C2*4.总结出来就是:‘中间相等,取两头’。

2.python实现矩阵乘法

知道了矩阵乘法的原理后,再一起来看看如何用python编写出程序吧。如何输入输出矩阵就不说了,直接看中间的算法。有以下几个步骤:

“定循环”。先根据乘法的原理,得出结果矩阵的形状,比如:A2*3 * B3*4 =C2*4,结果矩阵为2行4列,所以就一共有2*4个数字,也就是说程序需要循环2*4次。则循环可定为N1*M2.

“定因数”。每一次相乘时,两个因数都会改变,所以需要在循环开始出设置变量,这样每一次的变量都会更新。

“定结果”。在每一次循环时,需要算出一个结果,为了计算简便,可使用匿名函数lambda,其用法为lambdax:function,iterable.其中x为iterable的遍历。分别执行function。

3.代码示例

lis1,lis2 = [],[]N1,M1,N2,M2 = map(int,input().split())for i in range(N1): nums = list(map(int,input().split())) lis1.append(nums)for i in range(N2): nums = list(map(int,input().split())) lis2.append(nums)res = []for a in range(N1): res.append([]) for b in range(M2): lis4 = [] lis3 = lis1[a] for c in range(N2): lis4.append(lis2[c][b]) res_num = sum(map(lambda x,y:x*y,lis3,lis4)) res[a].append(res_num)for i in res: for o in i: print(o,end=' ') print()

4.运行效果

图2.4.1 运行效果

结语

Python中很多东西常常与数学有关,要想做正确,还得究其原理。对于矩阵乘法,可以是说得非常详细了,甚至会显得有点啰嗦,但是,所体现的是对于一个问题的解题思路。关键在于解题的方法,是需要一步一步来看的。这才是本文所要告诉大家的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档