영교차점(zero-crossing) 찾기 (파이썬)
a = [1, 2, 1, 1, -3, -4, 7, 8, 9, 10, -2, 1, -3, 5, 6, 7, -10]
일 때,
In[61]: z = np.where(np.diff(np.sign(a)))[0]
In[61]: z
Out[62]: array([ 3, 5, 9, 10, 11, 12, 15], dtype=int64)
-------------------------------------------------------------------------------------------
a : [ 1, 2, 1, 1, -3, -4, 7, 8, 9,10, -2, 1, -3, 5, 6, 7, -10]
k = np.sign(a) : [ 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, -1, 1, -1, 1, 1, 1, -1]
d = np.diff(k) : [ 0, 0, 0, -2, 0, 2, 0, 0, 0, -2, 2, -2, 2, 0, 0, -2]
np.where(d) : (array([ 3, 5, 9, 10, 11, 12, 15], dtype=int64),)
np.where(d)[0] : [ 3, 5, 9, 10, 11, 12, 15]
-------------------------------------------------------------------------------------------
np.diff()의 결과가 음수이면 데이터가 양수에서 음수로 바뀐 것이고,
np.diff()의 결과가 양수이면 데이터가 음수에서 양수로 바뀐 것이다.
np.where(d)라고 사용하면 d가 영이 아닌 모든 위치를 알려주며, 튜플로 반환된다.
따라서 결과만 얻고자 한다면 np.where(d)[0]로 사용한다.
np.where(d)[0]의 결과는 데이터에서 zero-crossing이 발생하는 시작점을 의미한다.
위의 예에서 "3"은 데이터가 4번째 샘플에서 5번째 샘플로 바뀌는 시점에서 zero-crossing이 발생함을 뜻한다.
피드 구독하기:
댓글 (Atom)
람다 표현식 (Lambda expression)
람다 표현식(Lambda expression) 람다 표현식으로 함수를 정의하고, 이를 변수에 할당하여 변수를 함수처럼 사용한다. (1) 람다 표현식 lambda <매개변수> : 수식 ※ 람다식을 실행하...
-
데이터 과학자가 알아야 할 5가지 클러스터링 알고리즘 February 26,2018 클러스터링은 데이터 포인트의 그룹화와 관련된 머신러닝 기술입니다. 데이터 포인트 집합이 주어지면 클러...
-
Speech Processing for Machine Learning: Filter banks, Mel-Frequency Cepstral Coefficients (MFCCs) and What's In-Between 출처: < http:...
-
영교차점(zero-crossing) 찾기 (파이썬) a = [1, 2, 1, 1, -3, -4, 7, 8, 9, 10, -2, 1, -3, 5, 6, 7, -10] 일 때, In[61]: z = np.where(np.diff(np.sign(...
댓글 없음:
댓글 쓰기