【问题标题】:Swap axes of a multidimensional Python list交换多维 Python 列表的轴
【发布时间】:2016-03-10 17:40:45
【问题描述】:

如何交换多维 Python 列表的轴?

例如,如果多维 Python 列表是 input = [[1,2], [3,4,5],[6]],我希望将 output = [[1,3,6], [2,4], [5]] 作为输出。

numpy.swapaxes 允许对数组这样做,但它不支持维度具有不同大小的情况,如给定示例中所示。与典型的 map(list, zip(*l)) 相同的问题。

【问题讨论】:

标签: python arrays python-2.7 multidimensional-array python-2.x


【解决方案1】:

试试这个:

from itertools import izip_longest
print [[i for i in element if i is not None] for element in  list(izip_longest(*input))]

输出:

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

iterools.izip_longest 在 Python 2.6 中引入。)

【讨论】:

  • 请注意,izip_longest 在 Python3 中已更改为 zip_longest(因为它现在返回的是迭代器而不是列表)。
【解决方案2】:

试试这个:

import numpy as np
import pandas as pd

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

df = pd.DataFrame(input).T

output = [[element for element in row if not np.isnan(element)] for row in df.values]

输出

 [[1.0, 3.0, 6.0], [2.0, 4.0], [5.0]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 2015-06-27
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多