二维矩阵可以用Python逐行表示,作为列表列表:每个内部列表代表矩阵的一行。例如,矩阵
1 2 3
4 5 6
将表示为[[1,2,3],[4,5,6]]
。
矩阵的转置使每一行成为一列。例如,上面矩阵的转置是
1 4
2 5
3 6
编写一个Python函数transpose(m),它使用这个行方式表示作为输入的二维矩阵,并使用相同的表示返回矩阵的转置。
答案 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]]