python实现矩阵的转置_Python实现矩阵转置的方法分析
本文实例讲述了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实现矩阵转置的方法分析相关推荐
- python 矩阵点乘_python相乘矩阵
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 鉴于最近复习线性代数计算量较大,且1800答案常常忽略一些逆阵.行列式的计算答案 ...
- python矩阵行数_python查看矩阵的行列号以及维数方式
print(X.shape):查看矩阵的行列号 print(len(X)):查看矩阵的行数 print(X.ndim):查看矩阵的维数 1 查看矩阵的行列号 2 查看矩阵的行数 3 查看矩阵的维数 补 ...
- python中的除法运算_python中矩阵除法运算的三种实现方法
介绍过python矩阵的乘法运算,numpy库中虽然乘法是矩阵运算的主要运算,但是numpy作为python中实现矩阵运算的好工具,也是可以轻松实现除法计算的,本文python中矩阵除法的三种实现方法 ...
- python输入二维数组_Python输入二维数组方法
Python输入二维数组方法 前不久对于Python输入二维数组有些不解,今日成功尝试,记以备忘.这里以输入1-9,3*3矩阵为例 n=int(input()) line=[[0]*n]*n for ...
- python矩阵乘法算法_Python算法|矩阵链乘法
概述 矩阵乘法是一个满足结合律的运算.显然,对于矩阵A.B.C来说,(AB)C 与 A(BC) 是等价的,我们可以根据自己的心情选择任意的运算顺序,总之,结果都是一样的. 糟糕的是,对计算机来说可不是 ...
- python numpy array转置_Python numpy数组转置与轴变换
这篇文章主要介绍了Python numpy数组转置与轴变换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 矩阵的转置 >>> im ...
- python 三维散点图拟合曲面_python实现三维拟合的方法
from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D fig ...
- python根据品种散点图鸢尾花_python机器学习入门到精通--实战分析(三)
利用sklearn分析鸢尾花 前面两篇文章提到了机器学习的入门的几个基础库及拓展练习,现在我们就对前面知识点进行汇总进行一个简单的机器学习应用,并构建模型. 练习即假定一名植物专家收集了每一朵鸢尾花的 ...
- python怎么打包压缩文件_Python打包文件夹的方法小结(zip,tar,tar.gz等)
本文实例讲述了Python打包文件夹的方法.分享给大家供大家参考,具体如下: 一.zip import os, zipfile #打包目录为zip文件(未压缩) def make_zip(source ...
- python 光标位置输入文字_Python 移动光标位置的方法
Python 移动光标位置的方法 更新时间:2019年01月20日 11:10:18 作者:你怎么知道你不会成功 今天小编就为大家分享一篇Python 移动光标位置的方法,具有很好的参考价值,希望对大 ...
最新文章
- java 小对话框_创建Java对话框
- python表白程序-我喜欢你 抖音表白程序python版
- 初探JavaScript(一)——也谈元素节点、属性节点、文本节点
- CSS学习01之我的第一css程序
- php 对象方法作为参数,在C++中对象如何作为参数传递和返回?(代码示例)
- math.floor java_Java Math.floor() 方法
- Windows 7平台安装Oracle Client 10g版本时需要做的一点变更
- lua 初接触 --- The first time use Lua for programing
- 100个微信小程序的源码公开分享
- 8086算术移位指令SAL和SAR
- Python2和Python3中@abstractmethod的用法
- Spring AOP核心原理分析
- python 基于机器学习识别验证码
- MFC开发IM-MFC中Arc函数的参数分别是什么意思
- python sftp连接_Python 脚本:创建SFTP连接传输数据
- 工业革命 书_工业革命以来最重大的变化
- Eclipse安装SVN插件的方法
- yyuc php,yyuc框架介绍
- php 0x80070005,PHPIIS0x80070005解决方法
- python 表格处理项目该如何分工_python 处理 Excel 表格
热门文章
- linux下的c++filt 命令
- python爬虫--代理的使用
- E文积累_20080321_drink to the dregs
- cvc 降噪_此降噪非彼降噪,你要的是哪种降噪?
- 最小径集的算法_最小割集Stoer-Wagner算法 | 学步园
- asp cstr 函数
- 深圳市计算机软件著作权资助,深圳市计算机软件著作权登记资助管理实施细则...
- camscanner(扫描全能王)功能解析与复现
- 马斯洛提出动机理论_动机理论:工作背后的动力机制
- pm2部署next项目