2차원 파이선 내부의 1차원 행렬 조작

조회수 1140회

다름이 아니라 파이선으로 클러스터링 하는 코드를 짜고 있습니다.
일단 초기 데이터가

a=[1,2,13,14,16,25,54,68,88,94,101,110,114,122,132,165,170]

이렇게 보여진다고 가정하고 군집화 코드를 작성하였습니다.

군집화 코드는 데이터 행렬과 최대 거리를 파라미터로 받아,
먼약 최대 거리 허용가능한 최대거리가 10이라 가정하면,
두 원소사이 거리가 10 이하일경우, 같은 array에 속하게 코딩을 했습니다.

위 예시의 결과는 다음과 같은 2차원 array로 표시됩니다.

[[1,2],[13,14,16,25],[54],[68],[88,94,101,110,114,122,132],[165,170]]

여기서 제가 하고자 하는것은
[54], [68]와 같은 길이가 1인 내부의 데이터를 제거하여
다음과 같은 결과를 얻고자 합니다

[[1,2],[13,14,16,25],[88,94,101,110,114,122,132],[165,170]]

이렇게 할려면 대충 a.pop을 써야겠다는 생각은 드는데..;
원하는 결과는 나오질 않습니다.

th = 10
g=[[a[0]]]
for i in a[1:] :
    if abs(i - g[-1][-1]) <= th:
        g[-1].append(i)
    else:
        g.append([i])

1 답변

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.