我有一个不同长度的数组列表,我想将它们组合成一个最大维度的矩阵,并在末尾填充零。例如(伪代码):
combine( [1,2,3], [4,5])
[[1,2,3],[4,5,0]]
这是我当前的解决方案:
max_len = max(len(xx) for xx in X)
M = np.array( [np.concatenate([xx, np.zeros( max_len - len(xx))]) for xx in X])
对于懒惰的人来说,要打这么多字,有更好的解决办法吗?有内置函数吗?
谢谢
您可以使用itertools.izip_longest()
:
from itertools import izip_longest
import numpy as np
def mycombine(*args):
return np.array(list(izip_longest(*args, fillvalue=0))).T