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

开发 后端
我们以下的文章是通过介绍Python矩阵转置的代码的方式,来介绍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数组中实际应用的数据结构的操作方案
责任编辑:佚名 来源: 互联网
相关推荐

2010-03-17 15:17:19

Python矩阵转置

2010-03-17 15:58:08

Python环境

2010-03-17 14:42:09

Python 文件

2010-03-17 15:01:24

Python复制文件

2010-03-16 18:59:47

Python模块

2010-03-23 14:54:27

Python目录文件

2010-03-17 12:20:15

Python Libr

2010-03-23 13:30:36

Python VIM

2010-03-17 14:18:27

Python open

2010-03-17 12:37:51

Python定时器

2010-03-29 15:33:18

Oracle EXP

2010-03-05 13:48:24

Python for

2010-03-19 15:16:11

Python代码

2010-03-25 18:37:28

Python技巧

2010-04-12 14:44:06

Oracle Impd

2010-03-17 10:01:12

Python安装

2010-03-16 16:47:25

Python数组

2010-03-09 19:07:01

Python语法

2010-03-29 10:55:38

Oracle优化

2009-08-25 17:02:20

C#串口操作
点赞
收藏

51CTO技术栈公众号