Python中的快速矩阵换位

2024-04-19 13:43:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,是否有快速的方法来对矩形2D矩阵进行换位(不涉及任何库导入)。?

如果我有阵列

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

我需要一个数组Y,它应该是X的转置版本,所以

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

Tags: 方法版本矩阵数组矩形
3条回答

简单: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])

如果您使用的是矩阵,那么您几乎肯定应该使用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]])

“不涉及任何图书馆进口”是一个愚蠢的、非生产性的要求。

>>> 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]]

如果内部对绝对需要列表,请使用第二个。

相关问题 更多 >