首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python中的矩阵转置

Python中的矩阵转置
EN

Stack Overflow用户
提问于 2011-02-09 03:38:48
回答 18查看 160.2K关注 0票数 150

我正在尝试为python创建一个矩阵转置函数,但是我似乎不能让它工作。假设我有

代码语言:javascript
复制
theArray = [['a','b','c'],['d','e','f'],['g','h','i']]

我想让我的函数

代码语言:javascript
复制
newArray = [['a','d','g'],['b','e','h'],['c', 'f', 'i']]

换句话说,如果我把这个二维数组打印成列和行,我希望行变成列,列变成行。

到目前为止,我做了这个,但它不起作用

代码语言:javascript
复制
def matrixTranspose(anArray):
    transposed = [None]*len(anArray[0])
    for t in range(len(anArray)):
        for tt in range(len(anArray[t])):
            transposed[t] = [None]*len(anArray)
            transposed[t][tt] = anArray[tt][t]
    print transposed
EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2011-02-09 03:41:39

Python 2:

代码语言:javascript
复制
>>> theArray = [['a','b','c'],['d','e','f'],['g','h','i']]
>>> zip(*theArray)
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]

Python 3:

代码语言:javascript
复制
>>> [*zip(*theArray)]
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]
票数 327
EN

Stack Overflow用户

发布于 2012-07-09 07:05:21

代码语言:javascript
复制
>>> theArray = [['a','b','c'],['d','e','f'],['g','h','i']]
>>> [list(i) for i in zip(*theArray)]
[['a', 'd', 'g'], ['b', 'e', 'h'], ['c', 'f', 'i']]

列表生成器创建具有列表项而不是元组的新的2d数组。

票数 65
EN

Stack Overflow用户

发布于 2011-02-09 04:38:08

如果行不相等,也可以使用map

代码语言:javascript
复制
>>> uneven = [['a','b','c'],['d','e'],['g','h','i']]
>>> map(None,*uneven)
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', None, 'i')]

编辑:在Python3中,map的功能发生了变化,可以使用itertools.zip_longest

来源:What’s New In Python 3.0

代码语言:javascript
复制
>>> import itertools
>>> uneven = [['a','b','c'],['d','e'],['g','h','i']]
>>> list(itertools.zip_longest(*uneven))
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', None, 'i')]
票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4937491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档