python实现矩阵转置的几种方法
文章目录
- (1)方法一、使用numpy转置
- (2)方法二、使用zip()函数
- (3)方法三、使用python列表表达式【不占用额外空间,“原地修改”】
- (4)方法四、新建列表B,使用双重循环添加元素
(1)方法一、使用numpy转置
import numpy as np
A = np.mat([[1,2,3],[4,5,6],[7,8,9]])
print(A.T)
print(A.swapaxes(0, 1))
# 均输出
# [[1 4 7]
# [2 5 8]
# [3 6 9]]
import numpy as np
A = [[1,2,3],[4,5,6],[7,8,9]]
print(np.transpose(A))
# 输出
# [[1 4 7]
# [2 5 8]
# [3 6 9]]
(2)方法二、使用zip()函数
- zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
- 可以使用 list() 转换来输出列表。【zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。】
- 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用
*
号操作符,可以将元组解压为列表。
zip(A)
相当于打包,打包为元组的列表:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> A = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*A) # 与 zip 相反,*A 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
A = [[1,2,3],[4,5,6],[7,8,9]]
print(*A) #[1, 2, 3] [4, 5, 6] [7, 8, 9]
#zip()返回的是一个对象。如需展示列表,需手动 list() 转换。
#print(zip(*A)) #<zip object at 0x000001CD7733A2C8>
print(list(zip(*A)))
# 输出
# [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
这里python中星号(*)的作用是将变量中可迭代对象的元素拆解出来。
(3)方法三、使用python列表表达式【不占用额外空间,“原地修改”】
A = [[1,2,3],[4,5,6],[7,8,9]]
#print(len(A)) #矩阵行数
#print(len(A[0])) #矩阵列数B = [[A[j][i] for j in range(len(A))] for i in range(len(A[0]))]
print(B)
# 输出
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
B = [[A[j][i] for j in range(len(A))] for i in range(len(A[0]))]
这句写的清楚一点就是:
A = [[1,2,3],[4,5,6],[7,8,9]]
#print(len(A)) #矩阵行数
#print(len(A[0])) #矩阵列数for i in range(len(A[0])):#len(A[0])矩阵列数for j in range(i,len(A)):#len(A)矩阵行数#转置就是A[i][j]和A[j][i]互换A[j][i], A[i][j] = A[i][j], A[j][i]
print(A)
# 输出
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
因为转置矩阵的对称性,for j in range(i,len(A))
限制了只遍历矩阵上三角,必须要限制,如果不限制会导致重复交换。
(4)方法四、新建列表B,使用双重循环添加元素
A = [[1,2,3],[4,5,6],[7,8,9]]
B=[]
for i in range(len(A[0])):#len(A[0])矩阵列数temp = []for j in range(len(A)):#len(A)矩阵行数temp.append(A[j][i])B.append(temp)
print(B)
# 输出
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
python实现矩阵转置的几种方法相关推荐
- python输出矩阵的转置_Python 矩阵转置的几种方法小结
我就废话不多说了,直接上代码吧! #Python的matrix转置 matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] def printmatrix(m): fo ...
- python矩阵转置_Python 矩阵转置的几种方法小结
我就废话不多说了,直接上代码吧! #Python的matrix转置 matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] def printmatrix(m): fo ...
- python distance matrix_Python 矩阵转置的几种方法小结
我就废话不多说了,直接上代码吧! #Python的matrix转置 matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] def printmatrix(m): fo ...
- python中矩阵的转置怎么写_Python 矩阵转置的几种方法小结
我就废话不多说了,直接上代码吧! #Python的matrix转置 matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] def printmatrix(m): fo ...
- python 矩阵类型转换_Python 矩阵转置的几种方法小结
我就废话不多说了,直接上代码吧! #Python的matrix转置 matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] def printmatrix(m): fo ...
- python求1到n的乘积_Python实现矩阵相乘的三种方法小结
问题描述 分别实现矩阵相乘的3种算法,比较三种算法在矩阵大小分别为22∗2222∗22, 23∗2323∗23, 24∗2424∗24, 25∗2525∗25, 26∗2626∗26, 27∗2727 ...
- python与excel做数据可视化-用Python进行数据可视化的10种方法
原标题:用Python进行数据可视化的10种方法 2015-11-19 关于转载授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+转载&quo ...
- python进行矩阵计算公式_纯python进行矩阵的相乘运算的方法示例
本文介绍了纯python进行矩阵的相乘运算的方法示例,分享给大家,具体如下: def matrixMultiply(A, B): # 获取A的行数和列数 A_row, A_col = shape(A) ...
- python矩阵乘法算法_纯python进行矩阵的相乘运算的方法示例
本文介绍了纯python进行矩阵的相乘运算的方法示例,分享给大家,具体如下: def matrixMultiply(A, B): # 获取A的行数和列数 A_row, A_col = shape(A) ...
最新文章
- 通过FM CO_VB_ORDER_POST更新生产订单的Components数据
- sas sql 读取最后一行数据_SAS基础编程和数据处理
- android提示程序正在执行,Android中获取正在运行的进程(一)
- 歪枣网股票数据下载接口汇总一
- 游戏开发之--开源软件1--cocos2d-x(c++)|openbor
- linux进入文件全文搜索命令,Linux 文件查找命令详解
- Java 面试如何坐等 offer?
- 深度学习(00)——GPU版本的TensorFlow
- Ubuntu安装OpenCV
- 苹果手机透明桌面_手机透明桌面,赶紧秀一下!
- 【openv450-samples】像素点聚类EM 图像聚类目标检测
- 医学图像有哪些会议期刊可以投
- iOS同时适配iPad横屏和iPhone竖屏
- 7-8 打死我也不说
- 【下载器篇】IDM下载器个性化设置
- 嵌入式系统,嵌入式系统定义和使用,嵌入式系统和桌面通用系统的区别,嵌入式系统结构组成,嵌入式软件组成
- 2023年淘宝天猫年货节超级红包哪里领?
- 软件开发公司的提成制度【修订中】
- 书论97 姚配中《书学拾遗》
- python自动下单源码_python+selenium实现淘宝双十一自动下单
热门文章
- 如何在CSDN上加入一个自定义栏目---编写HTML代码来做宣传栏
- ACM练级日志:ACM2013 南京网络赛
- 《Android 美颜类相机开发汇总》第五章 Android OpenGLES 美颜定制实现
- 西部专属的云安全人才培养计划长啥样?
- 可以保值的3级 省、市、区联动下拉框
- 祝中国程序员早日拥有加班自由
- 将搜索引擎从google.com/hk修改为google.com
- Excel可以通过函数来查看2个文本的相似程度
- 用VS开发一款“飞机大战“单机游戏<C++>
- 【微信授权】极其简单的实现方法