1
我有一個列表,我想將其放入重疊值的組中。我的直覺是使用itertools.groupby,但我不知道如何使它工作。組重疊數組
某些樣本數據:
a = np.array(range(10))
b = np.array(range(90,100))
c = np.array(range(50,60))
d = np.array(range(8,15))
e = np.array(range(55,80))
我想與三組重疊的(或不連續的)陣列落得:
groups = [[a,d],[b],[c,e]]
可否使用itertools.groupby要這樣做嗎?
for k,g in itertools.groupby([a,b,c,d,e], lambda x: SOMETHING?):
groups.append(list(g))
但我不確定按什麼排序和分組。任何建議使用這個或任何其他方法?謝謝!
更新:
感謝@abarnert下面的解決方案。你說得對,它不是一個巨大的數組,所以迭代強力工作正常。
arrays, groups, idx = [a,b,c,d,e], [], []
for N,X in enumerate(arrays):
if N not in idx:
group, idx = [X], idx+[N]
for n,x in enumerate(arrays):
if n not in idx and any(np.where(np.logical_and(X<x[-1],X>x[0]))[0]): group.append(x), idx.append(n)
groups.append(group)
有效的區間排序實際上是一個開放的研究問題;這是一個二次方案嗎? (對於5個區間,顯然是......) – abarnert 2014-10-17 20:59:45