我有一个列表数组,我想将所有具有重复值的列表合并。
例如,如果我有下一个数组a:
import numpy as np
a=np.array([[1,2,3],[4,3,2],[10,8,9],[72,3,6]])
预期结果应该是:
result=array([[ 1, 2, 3, 4, 6, 72],
[ 10, 8, 9]])
答案 0 :(得分:0)
您正在谈论的是一个称为“ 不相交集”的数据结构。
尽管它不是python内置的,但可以根据您的情况轻松制作一个简单的模型。
def merge_sets (arrays): # arrays could be your np array
sets = list()
for a in arrays:
sets.append(a)
a, b = 0, 1
while a < len(sets):
if b < len(sets) and sets[a].intersect(sets[b]):
c = sets[a].union(sets[b])
sets.remove(a)
sets.remove(b)
sets.append(c)
return sets
P.S。这只是一个粗略的实现,以演示如何实现。尚未检查其谬误。