2010-12-02 5 views
6
아마도

없는 등 큰 문제가 있지만,이 따라 내 마음을 나누기 :이와루프없이 숫자가 적은 배열을 정화 할 수 있습니까?

deltas = data[1:] - data[:-1]

:이 특정 예를 들어

for i in range(len(deltas)): 
     if deltas[i] < 0: deltas[i] = 0 
     if deltas[i] > 100: deltas[i] = 0 

... 더 나은 방법을이를 정화 부분을합니까?

질문 2 부 : 클렌징 규칙이이 예보다 복잡하거나 복잡하지 않으면 어떻게 될까요? 예를 들어 모든 음수를 0으로 변경하고자 할 수 있습니다. 또는 더 복잡한 매핑을 수행 중일 수 있습니다.

답변

9
import numpy as np 
deltas=np.diff(data) 
deltas[deltas<0]=0 
deltas[deltas>100]=0 
또한

가능한 빠르게 비트는

deltas[(deltas<0) | (deltas>100)]=0 
+0

[편집] 델타 [(델타 <0) | (델타> 100)] = 0 – Pete

+0

@ Pete : 와우, 고마워요! – unutbu

1

가 NumPy와 배열의 각 요소에 함수를 적용 numpy.vectorize를 사용하여 시도한다.

관련 문제