本文实例讲述了Python实现矩阵转置的方法。分享给大家供大家参考,具体如下:

前几天群里有同学提出了一个问题:手头现在有个列表,列表里面两个元素,比如[1, 2],之后不断的添加新的列表,往原来相应位置添加。例如添加[3, 4]使原列表扩充为[[1, 3], [2, 4]],再添加[5, 6]扩充为[[1, 3, 5], [2, 4, 6]]等等。

其实不动脑筋的话,用个二重循环很容易写出来:

def trans(m):

a = [[] for i in m[0]]

for i in m:

for j in range(len(i)):

a[j].append(i[j])

return a

m = [[1, 2], [3, 4], [5, 6]] # 想象第一个列表是原始的,后面的是往里添加的

print trans(m) # result:[[1, 3, 5], [ 2, 4, 6]]

然而不管怎么看这种代码都很丑。

仔细看了一下m这种结构。等等,这不是字典的iteritems()的结果么?如果dict(m),那么结果——不就是keys()和values()么?

于是利用字典转换一下:

def trans(m):

d = dict(m)

return [d.keys(), d.values()]

可是再仔细想想,这里面有bug。如果添加列表的第一个元素相同,也就是转化之后dict的key相同,那肯定就不行了呀!况且,如果原始列表不是两个,而是多个,肯定不能用字典的呀!于是这种方法作罢,还是好好看看列表的形状。

然后又是一个不小心的发现:

这种转置矩阵的即时感是怎么回事?

没错,这个问题的本质就是求解转置矩阵。于是就简单了,还是用个不动脑筋的办法:

def trans(m):

for i in range(len(m)):

for j in range(i):

m[i][j], m[j][i] = m[j][i], m[i][j]

return m

m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

print trans(m)

其实还是有点bug的,看起来是好用的,然而这个矩阵要求行列长度相同才行。

最后,群里某大神说:如果只是转置矩阵的话,直接zip就好了。这才想起来zip的本质就是这样的,取出列表中的对应位置的元素,组成新列表,正是这个题目要做的。

所以最终,这个题目(转置矩阵)的python解法就相当奇妙了:

def trans(m):

return zip(*d)

没错,就这么简单。python的魅力。

希望本文所述对大家Python程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

python实现矩阵的转置_Python实现矩阵转置的方法分析相关推荐

  1. python 矩阵点乘_python相乘矩阵

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 鉴于最近复习线性代数计算量较大,且1800答案常常忽略一些逆阵.行列式的计算答案 ...

  2. python矩阵行数_python查看矩阵的行列号以及维数方式

    print(X.shape):查看矩阵的行列号 print(len(X)):查看矩阵的行数 print(X.ndim):查看矩阵的维数 1 查看矩阵的行列号 2 查看矩阵的行数 3 查看矩阵的维数 补 ...

  3. python中的除法运算_python中矩阵除法运算的三种实现方法

    介绍过python矩阵的乘法运算,numpy库中虽然乘法是矩阵运算的主要运算,但是numpy作为python中实现矩阵运算的好工具,也是可以轻松实现除法计算的,本文python中矩阵除法的三种实现方法 ...

  4. python输入二维数组_Python输入二维数组方法

    Python输入二维数组方法 前不久对于Python输入二维数组有些不解,今日成功尝试,记以备忘.这里以输入1-9,3*3矩阵为例 n=int(input()) line=[[0]*n]*n for ...

  5. python矩阵乘法算法_Python算法|矩阵链乘法

    概述 矩阵乘法是一个满足结合律的运算.显然,对于矩阵A.B.C来说,(AB)C 与 A(BC) 是等价的,我们可以根据自己的心情选择任意的运算顺序,总之,结果都是一样的. 糟糕的是,对计算机来说可不是 ...

  6. python numpy array转置_Python numpy数组转置与轴变换

    这篇文章主要介绍了Python numpy数组转置与轴变换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 矩阵的转置 >>> im ...

  7. python 三维散点图拟合曲面_python实现三维拟合的方法

    from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D fig ...

  8. python根据品种散点图鸢尾花_python机器学习入门到精通--实战分析(三)

    利用sklearn分析鸢尾花 前面两篇文章提到了机器学习的入门的几个基础库及拓展练习,现在我们就对前面知识点进行汇总进行一个简单的机器学习应用,并构建模型. 练习即假定一名植物专家收集了每一朵鸢尾花的 ...

  9. python怎么打包压缩文件_Python打包文件夹的方法小结(zip,tar,tar.gz等)

    本文实例讲述了Python打包文件夹的方法.分享给大家供大家参考,具体如下: 一.zip import os, zipfile #打包目录为zip文件(未压缩) def make_zip(source ...

  10. python 光标位置输入文字_Python 移动光标位置的方法

    Python 移动光标位置的方法 更新时间:2019年01月20日 11:10:18 作者:你怎么知道你不会成功 今天小编就为大家分享一篇Python 移动光标位置的方法,具有很好的参考价值,希望对大 ...

最新文章

  1. java 小对话框_创建Java对话框
  2. python表白程序-我喜欢你 抖音表白程序python版
  3. 初探JavaScript(一)——也谈元素节点、属性节点、文本节点
  4. CSS学习01之我的第一css程序
  5. php 对象方法作为参数,在C++中对象如何作为参数传递和返回?(代码示例)
  6. math.floor java_Java Math.floor() 方法
  7. Windows 7平台安装Oracle Client 10g版本时需要做的一点变更
  8. lua 初接触 --- The first time use Lua for programing
  9. 100个微信小程序的源码公开分享
  10. 8086算术移位指令SAL和SAR
  11. Python2和Python3中@abstractmethod的用法
  12. Spring AOP核心原理分析
  13. python 基于机器学习识别验证码
  14. MFC开发IM-MFC中Arc函数的参数分别是什么意思
  15. python sftp连接_Python 脚本:创建SFTP连接传输数据
  16. 工业革命 书_工业革命以来最重大的变化
  17. Eclipse安装SVN插件的方法
  18. yyuc php,yyuc框架介绍
  19. php 0x80070005,PHPIIS0x80070005解决方法
  20. python 表格处理项目该如何分工_python 处理 Excel 表格

热门文章

  1. linux下的c++filt 命令
  2. python爬虫--代理的使用
  3. E文积累_20080321_drink to the dregs
  4. cvc 降噪_此降噪非彼降噪,你要的是哪种降噪?
  5. 最小径集的算法_最小割集Stoer-Wagner算法 | 学步园
  6. asp cstr 函数
  7. 深圳市计算机软件著作权资助,深圳市计算机软件著作权登记资助管理实施细则...
  8. camscanner(扫描全能王)功能解析与复现
  9. 马斯洛提出动机理论_动机理论:工作背后的动力机制
  10. pm2部署next项目