2013-09-06 1 views
1

데이터 집합에서 이동 평균을 계산하는 함수를 만들려고합니다. 이 기능입니다 : 내가 좋아하는 것 그러나파이썬에서 데이터에 0이 포함되어있는 경우 평균을 무시합니다.

def averaged_rel_track(navg, rel_values, nb, zeroindex): 
    #function to average the relative track values for each blade. This is 
    #dependant on the number values specified by the user to average over in a 
    #rolling average 
    for blade in range(0,int(nb)): 
     av_values=[] 
     rel_blade=rel_values[:,blade] 
     for rev in range(0,len(rel_blade)):   
      section=rel_blade[rev-int(navg)+1:rev] 
      av_value=np.mean(section) 
      av_values.append(av_value) 

     print av_values 

가에 수표를 추가하고 내가 하면 ...이를 구현하는 가장 좋은 방법은 기호와 strugging있어 이동 평균의 평균 수 (navg) 예를 들어 24라고하면 지정된 요소와 요소 앞에있는 23 개의 값 중 평균을 취합니다. 그러나 24 값 중 하나가 0 인 경우 해당 지정된 요소의 평균을 0으로 원합니다. 나는 시도했다 :

def averaged_rel_track(navg, rel_values, nb, zeroindex): 
    #function to average the relative track values for each blade. This is 
    #dependant on the number values specified by the user to average over in a 
    #rolling average 
    for blade in range(0,int(nb)): 
     av_values=[] 
     rel_blade=rel_values[:,blade] 
     for rev in range(0,len(rel_blade)):   
      section=rel_blade[rev-int(navg)+1:rev] 
      av_value=np.mean(section) 
      zero_test= np.where(np.any(section==0)) 
      print zero_test 
      if len(zero_test)==0: 
       av_value=None 
      av_values.append(av_value) 
     print av_values 

그러나 zero_test의 길이는 항상 1입니까?

누구나이 방법이나 다른 방법을 모두 수정하는 방법을 생각할 수 있습니까? @Mr E의 의견에 따라

건배

+0

이것이 다소 혼란 스럽지만 더 많은 explination을 제공하는 것이 더 행복하다는 것을 알고 있습니다. –

+0

효율적인 이동 평균 계산의 예를 보려면 여기를 참조하십시오. http://stackoverflow.com/questions/11352047/finding-moving-average-from-data -point-in-python – YXD

+0

나는 당신이 무엇을하려고하는지 잘 이해하지 못합니다. 그러나'zero_test'와 관련된 모든 줄을 if if np.any (section == 0)로 대체해야합니다 :' – YXD

답변

0

단순히 np.any(section==0)zero_test을 대체하여이 문제를 해결했다. 이것은 훨씬 간단한 방법입니다.

관련 문제