结合二维numpy数组“行”

问题描述

我有两个用numpy创建的二维数组(但行的长度不同):

a = [[1,2,3,4,5],[6,7,8,9]]

b = [[1,30,40,50],80,90,100]]

我想将这两个数组合并为一个新数组,保留重复的值并“逐行”添加新值:

#desired output

c = [[1,5,9,100]]

我尝试了许多方法包括np.apply_along_axisnp.unique一起使用,或者简单地循环每一行并追加到列表,然后创建该列表的数组形式。我得到的最接近的结果是一个数组数组,像这样:

array(array([1,50]),array([6,100]))

以上结果没有帮助,我需要一个numpy数组。任何帮助将不胜感激。

解决方法

让我们使用union

[np.union1d(x,y) for x,y in zip(a,b)]

输出:

[array([ 1,2,3,4,5,30,40,50]),array([  6,7,8,9,80,90,100])]

如果您确实需要列表列表:

[np.union1d(x,y).tolist() for x,b)]

输出:

[[1,50],[6,100]]