189 8069 5689

python中转置函数是的简单介绍

Python实现矩阵转置的方法分析

Python实现矩阵转置的方法分析

创新互联基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业乐山服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。

本文实例讲述了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的函数都有哪些

【常见的内置函数】

1、enumerate(iterable,start=0)

是python的内置函数,是枚举、列举的意思,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。

2、zip(*iterables,strict=False)

用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*号操作符,可以将元组解压为列表。

3、filter(function,iterable)

filter是将一个序列进行过滤,返回迭代器的对象,去除不满足条件的序列。

4、isinstance(object,classinfo)

是用来判断某一个变量或者是对象是不是属于某种类型的一个函数,如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例,

返回True。如果object不是一个给定类型的的对象, 则返回结果总是False

5、eval(expression[,globals[,locals]])

用来将字符串str当成有效的表达式来求值并返回计算结果,表达式解析参数expression并作为Python表达式进行求值(从技术上说是一个条件列表),采用globals和locals字典作为全局和局部命名空间。

【常用的句式】

1、format字符串格式化

format把字符串当成一个模板,通过传入的参数进行格式化,非常实用且强大。

2、连接字符串

常使用+连接两个字符串。

3、if...else条件语句

Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。其中if...else语句用来执行需要判断的情形。

4、for...in、while循环语句

循环语句就是遍历一个序列,循环去执行某个操作,Python中的循环语句有for和while。

5、import导入其他脚本的功能

有时需要使用另一个python文件中的脚本,这其实很简单,就像使用import关键字导入任何模块一样。

python中transpose是什么意思

transpose 英[trænˈspəʊz] 美[trænˈspoʊz]

vt. 数移项; 使变位; 音使变调; 变换顺序;

vi. 进行变换;

n. 转置阵;

[例句]Genetic engineers transpose or exchange bits of hereditary material from one organism to the next

遗传工程师将某一生物的小段遗传物质调换到另一生物,或与其互换。

[其他] 第三人称单数:transposes 复数:transposes 现在分词:transposing过去式:transposed 过去分词:transposed

python中怎样让数据列转置

需求:

你需要转置一个二维数组,将行列互换.

讨论:

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

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

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

print [[r[col] for r in arr] for col in range(len(arr[0]))]

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

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

print map(list,

zip(*arr))

本节提供了关于矩阵转置的两个方法,一个比较清晰简单,另一个比较快速但有些隐晦.

有时候,数据到来的时候使用错误的方式,比如,你使用微软的ADO接口访问数据库,由于Python和MS在语言实现上的差别.

Getrows方法在Python中可能返回的是列值,和方法的名称不同.本节给的出的方法就是这个问题常见的解决方案,一个更清晰,一个更快速.

在列表递推式版本中,内层递推式表示选则什么(行),外层递推式表示选择者(列).这个过程完成后就实现了转置.

在zip版本中,我们使用*arr语法将一维数组传递给zip做为参数,接着,zip返回一个元组做为结果.然后我们对每一个元组使用list方法,产生了列表的列表(即矩阵).因为我们没有直接将zip的结果表示为list,

所以我们可以我们可以使用itertools.izip来稍微的提高效率(因为izip并没有将数据在内存中组织为列表).

import itertools

print map(list,

itertools.izip(*arr))

但是,在特定的情况下,上面的方法对效率的微弱提升不能弥补对复杂度的增加.

关于*args和**kwds语法:

*args(实际上,*号后面跟着变量名)语法在Python中表示传递任意的位置变量,当你使用这个语法的时候(比如,你在定义函数时使用),Python将这个变量和一个元组绑定,并保留所有的位置信息,

而不是具体的变量.当你使用这个方法传递参数时,变量可以是任意的可迭代对象(其实可以是任何表达式,只要返回值是迭代器).

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

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

相关说明:

zip(...)

zip(seq1 [,

seq2 [...]]) - [(seq1[0], seq2[0] ...),

(...)]

Return a

list of tuples, where each tuple contains the i-th element

from each of

the argument sequences. The returned list is truncated

in length to

the length of the shortest argument sequence.

python中提供的数据类型转换函数有哪些,作用是什么?

作用就是把合理的数据转换为需要的类型。int()整数,float()浮点数,str()字符串,list()列表,tuple()元组,set()集合……

比如a='12'这个是字符串类型,用int函数a=int(a)这时变量a就是整型,字符串'12'变为了整数12。Python没有变量声明的要求,变量的属性在赋值时确定,这样变量的类型就很灵活。

有一种题目判断一个整数是否回文数,用字符串来处理就很简单

a=1234321#整数

if str(a)==str(a)[::-1]:#借助字符串反转比较就可以确定是否回文数。

还比如元组b=(1,3,2,4),元组是不可以更新删除排序成员的,但是列表是可以的,通过列表函数进行转换来实现元组的更新删除和排序。

b=(1,3,2,4)

b=list(b)

b.sort()

b=tuple(b)

这时得到的元组b就是一个升序的元组(1,2,3,4)

再比如你要输入创建整数列表或者整数元组基本上写法相同,就是用对应的函数来最后处理。

ls=list(map(int,input().split()))#这个就是列表

tup=tuple(map(int,input().split()))#这个就是元组

再比如有个叫集合的,集合有唯一性,可以方便用来去重。

ls=[1,2,3,1,2,3,1,2,3]

ls=list(set(ls))#通过set()去重后,现在的ls里就是[1,2,3]去重后的列表。

python transpose函数怎么用

比如,将A1:E1转置到A3:A7

首先选定A3:A7然后输入

=TRANSPOSE($A$1:$E$1)

最后按【组合键】确认。


分享文章:python中转置函数是的简单介绍
文章出自:http://cdxtjz.com/article/hdggdd.html

其他资讯