Python矩阵转置的实际应用操作方案与代码详解

如果你对Python矩阵转置的相关实际应用方案不是很了解的话,你就可以浏览我们的文章,我们的文章就是对Python矩阵转置相关内容的介绍,在这里我们就把其相关应用操作方案详细介绍一下。

你需要确保该数组的行列数都是相同的.比如:

 
 
 
  1. arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 

列表递推式提供了一个简便的矩阵转置的方法:

 
 
 
  1. print [[r[col] for r in arr] for col in range(len(arr[0]))]  
  2. [[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]  
  3.  

另一个更快和高级一些的方法,可以使用zip函数:

 
 
 
  1. print map(list, zip(*arr)) 

本节提供了关于Python矩阵转置的两个方法,一个比较清晰简单,另一个比较快速但有些隐晦.有时候,数据到来的时候使用错误的方式,比如,你使用微软的ADO接口访问数据库,由于Python和MS在语言实现上的差别. Getrows方法在Python中可能返回的是列值,和方法的名称不同.本节给的出的方法就是这个问题常见的解决方案,一个更清晰,一个更快速.

在列表递推式版本中,内层递推式表示选则什么(行),外层递推式表示选择者(列).这个过程完成后就实现了转置.在zip版本中,我们使用*arr语法将一维数组传递给zip做为参数,接着,zip返回一个元组做为结果.然后我们对每一个元组使用list方法,产生了列表的列表(即矩阵).因为我们没有直接将zip的结果表示为list, 所以我们可以我们可以使用itertools.izip来稍微的提高效率

 
 
 
  1. import itertools  
  2. print map(list, itertools.izip(*arr)) 

但是,在特定的情况下,上面的方法对效率的微弱提升不能弥补对复杂度的增加.关于*args和**kwds语法:*args(实际上,*号后面跟着变量名)语法在Python中表示传递任意的位置变量,当你使用这个语法的时候(比如,你在定义函数时使用),Python将这个变量和一个元组绑定,并保留所有的位置信息, 而不是具体的变量.当你使用这个方法传递参数时,变量可以是任意的可迭代对象

**kwds语法在Python中用于接收命名参数.当你用这个方式传递参数时,Python将变量和一个dict绑定,保留所有命名参数,而不是具体的变量值.当你传递参数时,变量必须是dict类型(或者是返回值为dict类型的表达式).

如果你要转置很大的数组,使用Numeric Python或其它第三方包,它们定义了很多方法,足够让你头晕的.相关说明:

 
 
 
  1. zip(...)  
  2. zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]  
  3. Return a list of tuples, where each tuple contains the i-th
     element  
  4. from each of the argument sequences. The returned list is 
    truncated  
  5. in length to the length of the shortest argument sequence.  

以上的文章就是对Python矩阵转置的实际应用方案的介绍。

【编辑推荐】

  1. 使用Python串口时应用到的模块有哪些
  2. PythonS60手机中搭建手机运行平台的五个步骤
  3. Python字符串中的mapping的功能介绍
  4. Python字符串中字符的大写与小写的变化
  5. Python数组中实际应用的数据结构的操作方案

网页名称:Python矩阵转置的实际应用操作方案与代码详解
URL链接:http://www.shufengxianlan.com/qtweb/news43/330893.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联