是否有任何快速方法可以在Python中转换矩形2D矩阵(不涉及任何库导入)。
说,如果我有一个数组
X=[ [1,2,3],
[4,5,6] ]
我需要一个数组Y,它应该是X的转置版本,所以
Y=[ [1,4],
[2,5],
[3,6] ]
答案 0 :(得分:19)
简单: Y = zip(* X)
>>> X=[[1,2,3], [4,5,6]]
>>> Y=zip(*X)
>>> Y
[(1, 4), (2, 5), (3, 6)]
编辑:回答关于zip(* X)含义的评论中的问题,这里是python手册的一个例子:
>>> range(3, 6) # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # call with arguments unpacked from a list
[3, 4, 5]
因此,当X
为[[1,2,3], [4,5,6]]
时,zip(*X)
为zip([1,2,3], [4,5,6])
答案 1 :(得分:6)
>>> X = [1,2,3], [4,5,6]]
>>> zip(*X)
[(1,4), (2,5), (3,6)]
>>> [list(tup) for tup in zip(*X)]
[[1,4], [2,5], [3,6]]
如果内部对完全需要列表,请使用第二个。
答案 2 :(得分:5)
如果你正在处理矩阵,你几乎肯定会使用numpy。这将比纯Python代码更容易,更有效地执行数值运算。
>>> x = [[1,2,3], [4,5,6]]
>>> x = numpy.array(x)
>>> x
array([[1, 2, 3],
[4, 5, 6]])
>>> x.T
array([[1, 4],
[2, 5],
[3, 6]])
“不涉及任何图书馆导入”是一项愚蠢的,非生产性的要求。