WHERE 활용 관련 간편한 함수 질문

게시판 IDL Q&A WHERE 활용 관련 간편한 함수 질문

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #2329 Reply
      ChoiYoun
      회원

      안녕하세요. WHERE 활용에 관련하여 편한 방법이 없을까 하여 질문 올립니다. 말로 설명하는 것보다 코드로 보여드리는게 나을 것 같아 간략한 예제 코드 작성해봅니다.

      a = [0, 1, 0, 0, 1]
      b = [1, 1, 0, 1, 1]
      wh_a = where(a eq 1)
      wh_b = where(b eq 1)

      IDL> print, wh_a
      1 4
      IDL> print, wh_b
      0 1 3 4

      wh_a와 wh_b가 가지고 있는 동일한 해당 값인 “1”과 “4”를 추출하고 싶습니다. 즉, 필요하는 건 a, b 변수의 값이 아니라 wh_a와 wh_b 변수가 공통적으로 가지고 있는 값입니다.

      좀더 일반화 해서 얘기하자면 서로 크기가 다른 변수(1차원)에서 서로 같은 값을 추출하고 싶습니다.

      FOR와 IF를 이용하여 동일한 값을 찾아내는 코드를 작성했지만, 왠지.. 더 편한 함수 같은게 있을 것 같아서 질문 올려봅니다.

    • #2330 Reply
      tlseorb0111
      회원

      단순히 a와 b가 같은 값을 가지는 index를 원하는 것이라면
      c = a-b
      idx = where(c eq 0) 이면 될듯합니다.
      그게 아니라 intersection을 구하고 싶으신거라면 astron 라이브러리의 match 프로시저를 참고하셔도 될 것 같습니다.

      a = [0, 1, 0, 0, 1]
      b = [1, 1, 0, 1, 1]
      wh_a = WHERE(a EQ 1)
      wh_b = WHERE(b EQ 1)

      match, wh_a, wh_b, suba, subb
      print, wh_a[suba]
      print, wh_b[subb]

      • 이 답변은 tlseorb0111에 의해 9 years, 2 months 전에 수정됐습니다.
    • #2332 Reply
      ChoiYoun
      회원

      역시! 그런 함수가 있을 줄 알았습니다! 감사합니다. 후자의 방법(match)이 제가 찾던 방법입니다!

2 답변 글타래를 보이고 있습니다
'WHERE 활용 관련 간편한 함수 질문'에 답변달기
글쓴이 정보: