转置不规则矩阵而不截断它

Transposing an irregular matrix without truncating it

我有一个 300x100 行的大矩阵。问题是某些行有 99 列而不是 100 列。

我以 zip 为例:

a = [[1,2,3],[4,5,6]]
b = [[1,2,3],[4,5]]

print zip(*a)
print zip(*b)

但是生成的矩阵被截断为最少的元素数,因此上面示例的结果是:

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

还尝试了 numpytranspose,但它没有转置矩阵,因为它不规则。

我需要转置这个大矩阵并获得 100x300 矩阵并避免截断矩阵。那么,是否已经有任何 python 函数或模块可以 return 转置而不截断它?

您可以使用 itertools.zip_longest(在 python 3.X zip_longest 中)和 fillvalue 参数来填充遗漏的项目:

>>> list(izip_longest(*b,fillvalue=0))
[(1, 4), (2, 5), (3, 0)]