将不等长的np.array合并成矩阵(或二维数组)的numpy一行代码
我有一个长度不一的数组列表,我想把它们组合成一个矩阵,矩阵的大小要根据最长的数组来定,然后在短的数组后面填上零。比如说(伪代码):
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])
对于一个懒人来说,这样输入太多了,有没有更好的解决办法?有没有什么内置的函数可以用?
谢谢
1 个回答
4
你可以使用 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