중복되는 값 그룹에 넣을 arrrays 목록이 있습니다. 필자의 본능은 itertools.groupby를 사용하는 것이지만 어떻게 작동하게 할 지 잘 모르겠습니다.중복 배열 그룹을 그룹화합니다.
일부 샘플 데이터 :
groups = [[a,d],[b],[c,e]]
내가이 일을 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))
?
for k,g in itertools.groupby([a,b,c,d,e], lambda x: SOMETHING?):
groups.append(list(g))
하지만 무엇을 정렬하고 그룹화할지 잘 모르겠습니다. 이 방법이나 다른 방법을 사용하여 어떤 제안? 감사!
업데이트 :
아래 해결책에 대해 감사합니다. 여러분은 엄청난 수의 배열이 아니므로 무차별 한 반복을 반복 할 수 있습니다. 범위의 목록이 충분히 작 으면
이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