python怎么表示矩阵转置(Python实现的矩阵转置与矩阵相乘运算示例)
类别:脚本大全 浏览量:846
时间:2021-11-03 15:30:12 python怎么表示矩阵转置
Python实现的矩阵转置与矩阵相乘运算示例本文实例讲述了Python实现的矩阵转置与矩阵相乘运算。分享给大家供大家参考,具体如下:
矩阵转置
方法一 :使用常规的思路
|
def transpose(M): # 初始化转置后的矩阵 result = [] # 获取转置前的行和列 row, col = shape(M) # 先对列进行循环 for i in range (col): # 外层循环的容器 item = [] # 在列循环的内部进行行的循环 for index in range (row): item.append(M[index][i]) result.append(item) return result |
思路:矩阵的转置就是从行变成列, 列变成行
- 先定义一个最终存放矩阵的容器
- 先对列进行循环i,并定义一个临时数组用于存放数据,在每次列的循环内部,再次对行进行循环j,取第M[j][i]个元素存入一个临时数组中
- 在每次列循环完毕,将临时数组存入最终数组中
- 当列循环完毕, 最终数组就是矩阵的转置
方法二:使用zip解包
|
def transpose(M): # 直接使用zip解包成转置后的元组迭代器,再强转成list存入最终的list中 return [ list (row) for row in zip ( * M)] |
思路:
zip 解包后,返回一个将多个可迭代对象组合成一个元组序列的迭代器,正如:
|
my_zip = list ( zip ([ 'a' , 'b' , 'c' ], [ 1 , 2 , 3 ])) print (my_zip) # [('a', 1), ('b', 2), ('c', 3)] |
在每次循环中将元组强转成list 并存入总list中
矩阵相乘
|
def matrixMultiply(A, B): # 获取A的行数和列数 A_row, A_col = shape(A) # 获取B的行数和列数 B_row, B_col = shape(B) # 不能运算情况的判断 if (A_col ! = B_row): raise ValueError # 最终的矩阵 result = [] # zip 解包后是转置后的元组,强转成list, 存入result中 BT = [ list (row) for row in zip ( * B)] # 开始做乘积运算 for A_index in range (A_row): # 用于记录新矩阵的每行元素 rowItem = [] for B_index in range ( len (BT)): # num 用于累加 num = 0 for Br in range ( len (BT[B_index])): num + = A[A_index][Br] * BT[B_index][Br] # 累加完成后,将数据存入新矩阵的行中 rowItem.append(num) result.append(rowItem) return result |
说明: A矩阵与B矩阵的乘法运算,最终得到新的矩阵X , 思路
- 首先判断是否可以相乘:前提条件是A的列与B的行要相同
- 我们可以画图理解:假如A是3行5列,B是5行2列,相乘结果是3行2列
- 将B转置后是2行5列,我们称之为BT, 这样 A 和 BT 都是5列了
- 则A的每行中的第 i 个元素 * BT每行中的第 i 个元素,相加构成新矩阵X的新行,循环A行,共3行,则新矩阵X就会逐步添加新行,待循环完毕,得到新矩阵X
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/Tyro_java/article/details/81638557
您可能感兴趣
- python 迭代对象必须实现哪些方法(详解python之heapq模块及排序操作)
- python pdf文件操作(Python常见读写文件操作实例总结文本、json、csv、pdf等)
- python怎么操作mysql(详解Python的数据库操作pymysql)
- python生成密码字典教程(Python利用字典破解WIFI密码的方法)
- python气温变化数据分析(基于python历史天气采集的分析)
- python里import的是什么(python中import与from方法总结推荐)
- python带权限复制文件夹(python定时复制远程文件夹中所有文件)
- python把文件上传服务器(Python 实现两个服务器之间文件的上传方法)
- pythonturtle库画图代码(用Python中的turtle模块画图两只小羊方法)
- pythonpandas操作拆分excel(Python使用pandas和xlsxwriter读写xlsx文件的方法示例)
- python 并发传输文件(python单线程文件传输的实例C/S)
- pythonflask系列教程(Python安装Flask环境及简单应用示例)
- 如何使用python定时运行(Python实现定时执行任务的三种方式简单示例)
- python中怎么查看函数的用法(Python中函数的基本定义与调用及内置函数详解)
- python飞机大战游戏背景(python实现飞机大战游戏)
- python怎么从数组中取内容(python调用c++ ctype list传数组或者返回数组的方法)
- 按这几方面养护佛肚竹盆景,保证枝叶繁茂,造型优美(按这几方面养护佛肚竹盆景)
- 冰岛旅游攻略(冰岛旅游攻略及花费八日游)
- 寒假旅游攻略(成都寒假旅游攻略)
- 菲律宾旅游攻略(菲律宾旅游攻略地图)
- 清华大学难考吗(清华大学考研录取分数线)
- 观花盆栽佛肚竹盆景制作及养护(观花盆栽佛肚竹盆景制作及养护)
热门推荐
- mysqlroot本地远程都可登陆(mysql5.7 设置远程访问的实现)
- 查看mysql支持的字符集(不可忽视的MySQL字符集)
- 怎么查看mysql异常链接(MySQL 查看链接及杀掉异常链接的方法)
- css3颜色详解(CSS3混合模式mix-blend-mode/background-blend-mode简介)
- docker harbor 配置中央仓库(Docker Gitlab+Jenkins+Harbor构建持久化平台操作)
- mysql的三种模式(详解 MySQL的FreeList机制)
- setTimeout和setIntelval的用法和区别
- nginx服务器和apache服务器(Nginx vs Apache两大web服务器比较)
- Request获取URL的各种信息
- dedecms不生成文档(dedecms批量替换文章中超链接的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9