【问题标题】:How to transpose a matrix in python without zip [duplicate]如何在没有zip的情况下在python中转置矩阵[重复]
【发布时间】:2013-04-17 10:45:25
【问题描述】:

我想知道如何将 python 中的用户输入更改为列表,或者更好的是矩阵,就像使用 int(input) 将其转换为整数一样。

【问题讨论】:

标签: python


【解决方案1】:
>>> L = [[1,2,3], [4,5,6], [7,8,9]]
>>> [[x[i] for x in L] for i in range(len(L[0]))]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

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

>>> import numpy as np
>>> L = np.arange(1, 10).reshape((3, 3))
>>> L
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> L.transpose()
array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])

【讨论】:

  • 必须是range(len(L[0]))
  • @AshwiniChaudhary 好点
  • OP 指定他不想使用 zip。
  • @hd1 是的,我给了他替代方案,但也可以将zip 放在那里以供其他可能查看此问题的人使用
  • @jamylak 优雅+简单!你可以解释一下list comprehension
【解决方案2】:

array([[1,2,3], [4,5,6], [7,8,9]]).T 会做你想做的事,如果你使用的是numpy

【讨论】:

【解决方案3】:

列表推导应该非常适合。这是一般功能:

def transpose(the_array):
    return [[the_array[j][i] for j in range(0, len(the_array[i]))] for i in range(0, len(the_array))]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-06
    • 2021-06-17
    • 2018-09-30
    • 1970-01-01
    • 2019-10-28
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多