데이터 처리문제

게시판 IDL Q&A 데이터 처리문제

이 게시글은 1개 답변과 2명 참여가 있으며 마지막으로  Sangwoo에 의해 3 주, 5 일 전에 업데이트 됐습니다.

  • 글쓴이
  • #5405

    JEK
    회원

    안녕하세요 데이터 처리에 질문이 있어서 질문드립니다.
    제가 하고자하는 것은 불규칙한 숫자 배열 중에서 연속된 숫자가 나올 때,
    조건부 처리를 하고자 합니다.
    예를 들면[ 2 41 20 32 55 34 35 36 36 59 25 10 11 19 40 ]
    이런식의 15개의 숫자에서 연속 3개 이상 나오는 숫자를 제외한 나머지는 nan이나 0처리를 하고자 하는데
    (이 경우 [ 0 0 0 0 0 34 35 36 0 0 0 0 0 0 0]를 만들고자 합니다.)
    아직 실력이 부족해 의도한 대로 처리하기가 어렵습니다 ㅠ
    혹시 도움을 주실 수 있을까요

  • #5407

    Sangwoo
    회원

    이런 경우를 위한 내장함수는 따로 없을겁니다. 그냥 반복형 구문을 사용하여 배열 내 각 원소에 대한 작업을 해주는 방식으로 처리해야 할 것으로 보입니다. 아래 예제코드를 참조해보시기 바랍니다.

    data = [2, 41, 20, 32, 55, 34, 35, 36, 36, 59, 25, 10, 11, 19, 40]
    judge = INTARR(N_ELEMENTS(data))
    sn = 1
    value = data[0]
    indices = [0]
    FOR j = 1, N_ELEMENTS(data)-1 DO BEGIN
    IF data[j] EQ value+1 THEN BEGIN
    sn = sn+1
    indices = [indices, j]
    ENDIF ELSE BEGIN
    sn = 1
    indices = [j]
    ENDELSE
    IF sn GE 3 THEN judge[indices] = 1
    value = data[j]
    ENDFOR
    PRINT, judge
    result = judge*data
    PRINT, result

답변은 로그인 후 가능합니다.