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

时间:2015-08-12 11:18:08

标签: python matrix transpose

我有一个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函数或模块将返回转置而不截断它?

1 个答案:

答案 0 :(得分:3)

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

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