【问题标题】:How to merge a multidimensional list into one list of tuples?如何将多维列表合并到一个元组列表中?
【发布时间】:2021-09-12 11:41:32
【问题描述】:

假设我们有以下多维列表:

import numpy as np
lst = [[1,2,3], [4,5,6],[7,8,9]]

预期输出:

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

我的问题是列表“lst”的大小不同,否则我会通过一个 for 循环来实现想要的结果。我尝试概括任务,这是我的尝试:

lst = [[1,2,3], [4,5,6],[7,8,9]]
test = np.array(list(zip(lst[i] for i in range(len(lst)))))

显然,这不是我想要的结果。是否有一种直接的方法可以在不遍历列表中的每个元素的情况下这样做?

【问题讨论】:

    标签: python numpy arraylist


    【解决方案1】:

    您可以使用*“解压”lst

    lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    test = list(map(list, zip(*lst)))
    print(test)
    

    打印:

    [[1, 4, 7], 
     [2, 5, 8], 
     [3, 6, 9]]
    

    【讨论】:

    • 您,先生,编译时间最快,并且您忠实于我的原始代码。谢谢
    【解决方案2】:

    改用numpy.transpose

    import numpy as np
    result = np.transpose(np.array(lst))
    

    或者干脆np.array(lst).T

    【讨论】:

    • 我太盲目了,看不到我想要的输出只是矩阵的转置......谢谢队友
    【解决方案3】:

    使用 Numpy 交换轴

    arr = np.array(lst)
    arr=np.swapaxes(arr,1,0)
    

    【讨论】:

    • 简单高效。我为三个答案计时并验证了最快的响应。不过还是谢谢
    猜你喜欢
    • 2011-01-25
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多