将不等长的np.array合并成矩阵(或二维数组)的numpy一行代码

2 投票
1 回答
620 浏览
提问于 2025-04-18 07:20

我有一个长度不一的数组列表,我想把它们组合成一个矩阵,矩阵的大小要根据最长的数组来定,然后在短的数组后面填上零。比如说(伪代码):

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

撰写回答