두 개의 1D 어레이가 있고 그것들의 상호 관계를보고 싶습니다. numpy에서 어떤 절차를 사용해야합니까? numpy.corrcoef(arrayA, arrayB)
및 numpy.correlate(arrayA, arrayB)
을 사용하고 있으며 두 가지 모두 내가 이해하거나 이해할 수없는 결과를 제공하고 있습니다. 누군가가 수치 결과를 이해하고 해석하는 방법에 대해 알려줄 수 있습니까? 감사.numpy.correlate 및 numpy.corrcoef 값을 해석하는 방법은 무엇입니까?
18
A
답변
10
numpy.correlate
은 단순히 두 벡터의 상호 상관을 반환합니다.
상호 상관을 이해해야하는 경우 http://en.wikipedia.org/wiki/Cross-correlation으로 시작하십시오.
좋은 예 (벡터 자체 크로스는 상관) 자기 상관 함수를 보면 알 수 있습니다
import numpy as np
# create a vector
vector = np.random.normal(0,1,size=1000)
# insert a signal into vector
vector[::50]+=10
# perform cross-correlation for all data points
output = np.correlate(vector,vector,mode='full')
이것은 최대 때와 빗/샤 기능을 반환합니다 두 데이터 세트가 겹쳐 있습니다. 이것은 자기 상관이므로 두 입력 신호 사이에 "지연"이 없습니다. 따라서 상관 관계의 최대 값은 vector.size-1입니다.
중복되는 데이터에 대한 상관 관계 값만 원하면 mode='valid'
을 사용할 수 있습니다.
3
지금은 numpy.correlate
에만 의견을 쓸 수 있습니다. 강력한 도구입니다. 나는 두 가지 목적으로 그것을 사용했다. 첫 번째는 다른 패턴의 내부에 패턴을 찾는 것이다
import numpy as np
import matplotlib.pyplot as plt
some_data = np.random.uniform(0,1,size=100)
subset = some_data[42:50]
mean = np.mean(some_data)
some_data_normalised = some_data - mean
subset_normalised = subset - mean
correlated = np.correlate(some_data_normalised, subset_normalised)
max_index = np.argmax(correlated) # 42 !
I는 그것을 사용한 초 사용 (및 결과의 해석 방법) 주파수 검출이다
hz_a = np.cos(np.linspace(0,np.pi*6,100))
hz_b = np.cos(np.linspace(0,np.pi*4,100))
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(hz_a)
axarr[0].plot(hz_b)
axarr[0].grid(True)
hz_a_autocorrelation = np.correlate(hz_a,hz_a,'same')[round(len(hz_a)/2):]
hz_b_autocorrelation = np.correlate(hz_b,hz_b,'same')[round(len(hz_b)/2):]
axarr[1].plot(hz_a_autocorrelation)
axarr[1].plot(hz_b_autocorrelation)
axarr[1].grid(True)
plt.show()
두 번째 봉우리의 색인을 찾습니다. 이것으로 주파수를 찾기 위해 다시 일할 수 있습니다.
first_min_index = np.argmin(hz_a_autocorrelation)
second_max_index = np.argmax(hz_a_autocorrelation[first_min_index:])
frequency = 1/second_max_index
관련 문제
- 1. 이 날짜 값을 해석하는 방법은 무엇입니까?
- 2. 태그를 해석하는 방법은 무엇입니까?
- 3. 코드에서이 흐름을 해석하는 방법은 무엇입니까?
- 4. ncval의 출력을 해석하는 방법은 무엇입니까?
- 5. gamepad-rumblers를 해석하는 방법은 무엇입니까?
- 6. 충돌 보고서를 해석하는 방법은 무엇입니까?
- 7. 용어 카디널리티를 해석하는 방법은 무엇입니까?
- 8. 이 어셈블리를 해석하는 방법은 무엇입니까?
- 9. html 특수 엔터티를 해석하는 브라우저없이 입력 값을 검색하는 방법은 무엇입니까?
- 10. PyBrain net.activate에서 결과를 해석하는 방법은 무엇입니까?
- 11. mDNS가 주소를 정확히 해석하는 방법은 무엇입니까?
- 12. 메모리 사용량 수치를 해석하는 방법은 무엇입니까?
- 13. 하스켈에서 함수 유형을 해석하는 방법은 무엇입니까?
- 14. 이 레일스 에러를 해석하는 방법은 무엇입니까?
- 15. Python으로 JSON을 잘못 해석하는 방법은 무엇입니까?
- 16. 내 스택 추적을 해석하는 방법은 무엇입니까?
- 17. Apache 서버의 액세스 로그를 해석하는 방법은 무엇입니까?
- 18. Subversion : diff 결과를 해석하는 방법은 무엇입니까?
- 19. 모노 프로파일 러 결과를 해석하는 방법은 무엇입니까?
- 20. 이 타임 스탬프를 해석하는 방법은 무엇입니까?
- 21. 간단한 문법을 가장 잘 해석하는 방법은 무엇입니까?
- 22. svg를 생성하는 그래프 용지를 해석하는 방법은 무엇입니까?
- 23. JQuery UI의 API 문서를 해석하는 방법은 무엇입니까?
- 24. cmd.exe를 실행하지 않고 명령을 해석하는 방법은 무엇입니까?
- 25. iPhone에서 가속도계 판독 값을 해석하는 방법
- 26. ELF 실행 파일에서 동적 기호 테이블을 해석하는 방법은 무엇입니까?
- 27. /proc/bus/pci/devices의 내용을 해석하는 방법은 무엇입니까?
- 28. Papi 출력을 해석하는 방법
- 29. MySQL 클러스터 : 바이너리 로그를 디코딩/해석하는 방법은 무엇입니까?
- 30. 콜론 및 쉼표 표기법을 해석하는 파서가 있습니까?
나는 오래되었지만 동일한 질문이 있기 때문에 결론에 도달하는 방법을 이해할 수 없습니다. 보고서에 자기 상관이 있습니까? 출력을 어떻게 변환합니까? – hephestos