python矩阵转置和zip

时间:2012-04-16 07:03:54

标签: python

如何获得此矩阵的转置。任何更简单,算法的方法来执行此操作...

第一个问题:

 Input  a=[[1,2,3],[4,5,6],[7,8,9]]
 Expected output a=[[1, 4, 7], [2, 5, 8], [3, 6, 9]] 

第二个问题:

Zip给我下面的输出如下所示,当我不知道数组中有多少元素时我怎么能拉链,在这种情况下我知道3个元素a [0],a [1],a [2]但我如何压缩[n]元素

 >>> zip(a[0],a[1],a[2])
 [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

6 个答案:

答案 0 :(得分:17)

使用zip(*a)

>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

工作原理:zip(* a)等于zip(a [0],a [1],a [2])。

答案 1 :(得分:14)

问题答案:

>>> import numpy as np
>>> first_answer = np.transpose(a)
>>> second_answer = [list(i) for i in zip(*a)]

感谢afg帮忙

答案 2 :(得分:3)

您可以使用numpy.transpose

numpy.transpose

>>> import numpy
>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> numpy.transpose(a)
array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])

答案 3 :(得分:1)

解决方案是使用tuple()函数。

以下是您的情况下的示例:

a      = [[1,2,3],[4,5,6],[7,8,9]]
output = tuple(zip(*a))

print(output)

答案 4 :(得分:1)

您可以使用list(zip(*a))

使用*a,您的列表列表可以具有任意数量的条目。

答案 5 :(得分:0)

尝试用此替换适当的变量

>> regexprep(filename, '\.', '_old.')
ans =
    'my_old.file_old.ext'