2014-02-27 2 views
1

파이썬에서 출력되는 초음파 핑 센서가 있습니다. 이 수치는 분명히 결코 멈추지 않으므로파이썬에서 스트림 마지막 세 항목

while True: 

입니다.

해당 데이터는 'ping_out'이라고하는 var로 설정됩니다. 나는 ping_out에서 마지막 3 번 읽음을 얻어서 ping_average라는 var를 얻을 수 있도록 평균화해야합니다. 어떻게해야합니까?

감사합니다.

+0

당신이 'ping_out'을 설정하는 코드를 게재 할 수 있습니까? 길이가 3 인 큐가 이에 대한 적절한 데이터 구조 인 것처럼 보입니다. –

+1

관련 항목 : http://stackoverflow.com/questions/11352047/finding-moving-average-from-data-points-in-python – kojiro

+0

ping_out = timepassed * 17000. Timepassed는 펄스를 보내고 복구하는 사이의 시간입니다. – developius

답변

4

사용 길이 3 deque 목적 :

from collections import deque 
last3 = deque(maxlen=3) 

while True: 
    last3.append(this_ping) # <-- insert your ping here, of course 
    avg = sum(last3)/len(last3) 
    print avg 
+0

니스. Part의 일부는'len (last3)'비트를 미리 최적화하기를 원하기 때문에 단지 최대 3 번만 호출하면된다. – kojiro

+0

나는 당신의 최적화가 최적화의 오버 헤드에 의해 무효화 될지 궁금해 할 것이다. – mhlester

+0

화려한 답변과 매우 빠른 답장을 보내 주셔서 감사합니다 !!!!! 그리고 당신 덕택입니다. @David for try : 안타깝게도, 여기에있는 모든 사람들이 아주 빠르 긴 타이핑을하고 있습니다.) – developius