本文实例讲述了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实现的矩阵转置与矩阵相乘运算示例相关推荐

  1. 用C++写的矩阵处理函数 包括求逆、转置、乘积等等

    用C++写的矩阵处理函数 包括求逆.转置.乘积等等 最近,无论是大学还是小学,都放暑假了. 我们本来也应该有暑假的,可是悲催地被老师给残忍剥夺了,只能继续呆在实验室里面苦逼地干活. 最近南方天气太热, ...

  2. python中multiply函数_python中numpy库内multiply()、dot()和 * 三种乘法运算的区别小计...

    首先,导入函数包: import numpy as np 1.np.multiply()函数: 数组:(点对点)对应位置元素相乘 矩阵:对应位置元素相乘 示例: A = np.array([[1,2] ...

  3. python中mat函数_Python中flatten( )函数及函数用法详解

    flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列 ...

  4. python中pop函数_Python中的Pop函数

    python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...

  5. python数字类型转换函数_Python的数据类型转换函数

    玩蛇网这篇文章给大家介绍关于,Python数据类型的转换函数. Python提供了一些可以把某个值从一种数据类型,转换成为另一种数据类型的内置函数和方法.int函数可以将任何可以转换为整型的值转换为整 ...

  6. python重复执行函数_Python threading 单线程 timer重复调用函数

    项目中需要使用定时器,每次都使用构造器函数调用: timer = threading.Timer(timerFlag, upload_position) timer.start() 打印线程后发现,每 ...

  7. python反序数函数_python range()函数取反序遍历sequence的方法

    python range()函数取反序遍历sequence的方法 python中的range函数取反序有两种方式 第一种:先构建一个列表,然后对列表中的元素进行反转. 例如: a=range(5) f ...

  8. python的高级函数_Python的高级函数

    Python的高级函数 1. map函数 map(func, *itertables) 对itertables中的每个元素使用func,当最短的itertable结束时便停止.map可以传入多个ite ...

  9. python的def函数_Python 学习之 def 函数

    共3118字, 阅读本文需要8分钟 def 函数基础 def 函数的定义 在 python 中,def 函数是用来定义一个 function() 的.基本使用 示例下面我们定义了一个 function ...

  10. python self调用函数_Python之self

    python类的函数中,第一个参数必须为实例对象本身,约定俗称记为self.self是实例本身,在外部调用类中的函数时,不需要给self赋值,但需要给其他的参数赋值. 与普通的函数相比,在类中定义的函 ...

最新文章

  1. js 根据所输内容生成助记码
  2. 台式电脑怎么连接手机热点_电脑搜不到手机热点 为什么搜不到手机热点
  3. phoneGap实现离线缓存
  4. 实用 VSCODE 8类插件安利,提高开发效率
  5. db2 表添加字段及注释操作
  6. 数据增强_NLP 数据增强方法 EDA
  7. python str转json_Python中如何将一个字符串转换为json格式呢?
  8. Oracle使用NLSSORT函数实现汉字的排序
  9. python win32api键盘_python基于win32api实现键盘输入
  10. UCOSII操作系统(一)--基础知识
  11. Python去除文件名后缀
  12. Excel中提取单元格中的部分内容或单元格中的数字公式大全(提取数字,提取前几位,提取指定文字之间的内容等等)
  13. 18、try...catch
  14. kettle java交互_java程序中给Kettle传参数,其实很简单
  15. ajax xmlhttp下open方法POST、GET参数的区别
  16. Perma.cc停止学术链接腐烂
  17. 任正非揭秘华为鸿蒙,任正非揭秘!华为鸿蒙系统,比安卓、苹果系统快,为物联网而生...
  18. Hillstone 基础上网配置
  19. Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] ...
  20. 抽象类,抽象函数课后习题·唐老狮

热门文章

  1. 异步任务+JSON解析+ListView分页
  2. bugku——蹭网先解开密码(EWSA,hashcat破解wifi握手包)
  3. AutoJS4.1.0实战教程---一键签到
  4. 风云激荡,成功者自强
  5. Windows Dos命令
  6. 【模糊神经网络】基于simulink的模糊神经网络控制器设计
  7. Photoshopnbsp;CS4基础视频教程:通道与…
  8. his系统管理工具配置服务器,HIS系统(his管理系统)V3.0.1 官网版
  9. Vuex 命名空间 namespaced 介绍
  10. oracle如何查看剩余表空间,oracle 查看各表空间剩余量