如何交換多維Python列表的座標軸?多維Python列表的交換軸
例如,如果多維Python列表是input = [[1,2], [3,4,5],[6]]
,我希望將output = [[1,3,6], [2,4], [5]]
作爲輸出。
numpy.swapaxes
允許爲數組這樣做,但它不支持維度具有變化大小的情況,如給出的示例中所示。與典型的map(list, zip(*l))
相同的問題。
如何交換多維Python列表的座標軸?多維Python列表的交換軸
例如,如果多維Python列表是input = [[1,2], [3,4,5],[6]]
,我希望將output = [[1,3,6], [2,4], [5]]
作爲輸出。
numpy.swapaxes
允許爲數組這樣做,但它不支持維度具有變化大小的情況,如給出的示例中所示。與典型的map(list, zip(*l))
相同的問題。
嘗試這種情況:
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引入)
嘗試這種情況:
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]]
的[移調列在python /大熊貓]可能的複製(http://stackoverflow.com/questions/19380670/transpose-columns-in-python-pandas) – msw
@msw的鏈接的問題假定每個維度具有一個固定的大小。 –