问题描述
我有两个用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_axis
与np.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]]