2014-12-12 3 views
1

두 배열 (v_1v_2)이 있고 이러한 배열을 사용하여 값이 임계 값을 초과하는 인덱스를 찾고 이전 및 다음 배열 값을 찾은 다음 새 배열을 반환하는 함수가 있습니다 (v_1fv_2f)를 사용하여 이전 값이 임계 값을 충족시키지 못하는 인덱스를 포함합니다.이전 값이 조건을 충족시키지 못한 인덱스 배열을 만드는 방법은 무엇입니까?

그러나 어떤 이유로 인해 return 성명서에서 이러한 배열을 제공하지 않습니다. 왜 그런가요? 또한이 함수가 원하는 조건의 배열을 생성해야합니까?

def findbursts(v_1,v_2): 

    for index, obj in enumerate(v_1): 
     if obj == thresh: 
      v_1f=(obj).nonzero()[0] 
      # TODO Bounds-checking 
      previous = v_1f[index - 1] 
      if previous == None: 
       v_1ff = v_1f 

    for index, obj in enumerate(v_2): 
     if obj == thresh: 
      v_2f=(obj).nonzero()[0] 
      # TODO Bounds-checking 
      previous = v_2f[index - 1] 
      if previous == None: 
       v_2ff = v_2f 

    return [v_1ff, v_2ff] 
+1

두 번째'for' 루프에 추가 return 문이있는 것 같습니다. 거기 있어야한다고 확신합니까? – Kevin

+0

죄송합니다. 아니 었어도 안된다,하지만 여전히 작동하지 않습니다. 나는 또한 내가 원하는 것을 할 수있는 기능을 업데이트했다. 나는 생각한다. –

+1

아마도 여러분은 우리가 여러분의 요구 사항을 이해할 수 있도록하기 위해 몇 가지 샘플 데이터와 원하는 결과를 포함 할 수 있습니다. – holdenweb

답변

4
  1. 당신은 아마 당신의 문제 설명과 일치하지 않는 ==를 사용하여, obj >= thresh합니다.
  2. 왜 이전 값을 None과 비교하고 있습니까? 확인해야 할 경우 < thresh
  3. nonzero() 전화가 무엇인지 명확히 할 수 있습니까?
  4. 실제로 루프 안에 배열을 만들지 않습니다. v_1ffv_2ff은 단일 값입니다.
    해결 방법 중 하나는 미리 목록을 만들고 (v_1ff = []) 목록에 조건이 일치하면 찾은 값을 추가하는 것입니다.
  5. v_1ff은 실제로 이전 이 아니고 이전 색인이 아니며 - 무엇을 원하십니까?
  6. 두 목록에서 완전히 동일한 작업을 수행하는 경우 하나의 목록에 대해 동일한 작업을 수행 한 다음 두 번만 호출하는 기능을 만드는 것이 더 깔끔합니다.

당신은 아마 지능형리스트로이 모든 훨씬 더 쉽게 수행 할 수 있습니다

from itertools import izip 

def find_bursts(data, thresh): 
    return [i for i, (val, next_val) in enumerate(izip(data[:-1], data[1:])) 
      if val < thresh and next_val >= thresh] 

내역 : 인접 요소

  • enumerate 첨부합니다 쌍으로 배열을 통해

    • izip(data([:-1], data[1:]) 반복 지수는
    • if val < thresh and next_val >= thresh입니다. 필터 조건
  • +0

    1) 어느 쪽이든 괜찮을 것입니다. 나는 thresh에 도달하는 값만 원한다. 2) '이전'값에 대한 나의 이해는 현재 값이 임계 값을 만족하면 값을 가진다는 것입니다. 3) 0이 아닌 인덱스의 튜플을 만드는 방법으로 사용합니다. 4) 예. 그것이 내가하고 싶은 일입니다. 5) 값을 원합니다. 내가 이미 알고있는 또 다른 배열이 나에게 색인을 줄 것이다. 6) 기회가있을 때 당신의 접근 방식을 시도 할 것입니다. 완벽 해 보이지만'itertools' 나'izip'에 익숙하지 않습니다 (저는 newb입니다). –

    +0

    와우! 감사! 그것은 매력처럼 작동합니다! 나는 그렇게 쉬울 것이라고 생각하지 않았다. 다시 한 번 감사드립니다! –

    관련 문제