python程序转置矩阵

时间:2017-08-19 15:29:57

标签: linux python-3.x

二维矩阵可以用Python逐行表示,作为列表列表:每个内部列表代表矩阵的一行。例如,矩阵

1  2  3
4  5  6 

将表示为[[1,2,3],[4,5,6]]

矩阵的转置使每一行成为一列。例如,上面矩阵的转置是

1  4  
2  5
3  6

编写一个Python函数transpose(m),它使用这个行方式表示作为输入的二维矩阵,并使用相同的表示返回矩阵的转置。

2 个答案:

答案 0 :(得分:1)

这是我的首选方法(使用zip):

mat = [[1, 2, 3], [4, 5, 6]]

mat_t = list(zip(*mat))
print(mat_t)
# [(1, 4), (2, 5), (3, 6)]

警告:您将tuple作为行(可能需要将其转换为list s)。

可以实现
mat_t = list(list(row) for row in zip(*mat))
print(mat_t)
# [[1, 4], [2, 5], [3, 6]]

作为函数编写,这将是:

def transpose(mat):
    return list(list(row) for row in zip(*mat))

答案 1 :(得分:1)

由于您已指定linux代码,此处为 datamash 简短

datamash -W transpose <file

输出:

1   4
2   5
3   6

https://www.gnu.org/software/datamash/

至于 Python 解决方案,我会使用numpy模块,它最适合处理矩阵和数值数据:

import numpy as np

a = np.array([[1,2,3],[4,5,6]])
transposed = a.transpose()

print(transposed)

输出:

[[1 4]
 [2 5]
 [3 6]]