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程序设计有所帮助。
python矩阵相乘函数_Python实现的矩阵转置与矩阵相乘运算示例相关推荐
- 用C++写的矩阵处理函数 包括求逆、转置、乘积等等
用C++写的矩阵处理函数 包括求逆.转置.乘积等等 最近,无论是大学还是小学,都放暑假了. 我们本来也应该有暑假的,可是悲催地被老师给残忍剥夺了,只能继续呆在实验室里面苦逼地干活. 最近南方天气太热, ...
- python中multiply函数_python中numpy库内multiply()、dot()和 * 三种乘法运算的区别小计...
首先,导入函数包: import numpy as np 1.np.multiply()函数: 数组:(点对点)对应位置元素相乘 矩阵:对应位置元素相乘 示例: A = np.array([[1,2] ...
- python中mat函数_Python中flatten( )函数及函数用法详解
flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列 ...
- python中pop函数_Python中的Pop函数
python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...
- python数字类型转换函数_Python的数据类型转换函数
玩蛇网这篇文章给大家介绍关于,Python数据类型的转换函数. Python提供了一些可以把某个值从一种数据类型,转换成为另一种数据类型的内置函数和方法.int函数可以将任何可以转换为整型的值转换为整 ...
- python重复执行函数_Python threading 单线程 timer重复调用函数
项目中需要使用定时器,每次都使用构造器函数调用: timer = threading.Timer(timerFlag, upload_position) timer.start() 打印线程后发现,每 ...
- python反序数函数_python range()函数取反序遍历sequence的方法
python range()函数取反序遍历sequence的方法 python中的range函数取反序有两种方式 第一种:先构建一个列表,然后对列表中的元素进行反转. 例如: a=range(5) f ...
- python的高级函数_Python的高级函数
Python的高级函数 1. map函数 map(func, *itertables) 对itertables中的每个元素使用func,当最短的itertable结束时便停止.map可以传入多个ite ...
- python的def函数_Python 学习之 def 函数
共3118字, 阅读本文需要8分钟 def 函数基础 def 函数的定义 在 python 中,def 函数是用来定义一个 function() 的.基本使用 示例下面我们定义了一个 function ...
- python self调用函数_Python之self
python类的函数中,第一个参数必须为实例对象本身,约定俗称记为self.self是实例本身,在外部调用类中的函数时,不需要给self赋值,但需要给其他的参数赋值. 与普通的函数相比,在类中定义的函 ...
最新文章
- js 根据所输内容生成助记码
- 台式电脑怎么连接手机热点_电脑搜不到手机热点 为什么搜不到手机热点
- phoneGap实现离线缓存
- 实用 VSCODE 8类插件安利,提高开发效率
- db2 表添加字段及注释操作
- 数据增强_NLP 数据增强方法 EDA
- python str转json_Python中如何将一个字符串转换为json格式呢?
- Oracle使用NLSSORT函数实现汉字的排序
- python win32api键盘_python基于win32api实现键盘输入
- UCOSII操作系统(一)--基础知识
- Python去除文件名后缀
- Excel中提取单元格中的部分内容或单元格中的数字公式大全(提取数字,提取前几位,提取指定文字之间的内容等等)
- 18、try...catch
- kettle java交互_java程序中给Kettle传参数,其实很简单
- ajax xmlhttp下open方法POST、GET参数的区别
- Perma.cc停止学术链接腐烂
- 任正非揭秘华为鸿蒙,任正非揭秘!华为鸿蒙系统,比安卓、苹果系统快,为物联网而生...
- Hillstone 基础上网配置
- Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] ...
- 抽象类,抽象函数课后习题·唐老狮
热门文章
- 异步任务+JSON解析+ListView分页
- bugku——蹭网先解开密码(EWSA,hashcat破解wifi握手包)
- AutoJS4.1.0实战教程---一键签到
- 风云激荡,成功者自强
- Windows Dos命令
- 【模糊神经网络】基于simulink的模糊神经网络控制器设计
- Photoshopnbsp;CS4基础视频教程:通道与…
- his系统管理工具配置服务器,HIS系统(his管理系统)V3.0.1 官网版
- Vuex 命名空间 namespaced 介绍
- oracle如何查看剩余表空间,oracle 查看各表空间剩余量