2016-11-28 2 views
1

수백 개의 배열이 있고 그 각각의 상관 관계를 계산한다고 가정하십시오. 중첩 된 for 루프를 사용하여 계산했습니다. 그러나 실행에는 엄청난 시간이 걸렸습니다 (20 분!). 이 계산을보다 효율적으로 수행하는 한 가지 방법은 상관 관계 테이블의 대각선 절반을 계산하여 다른 절반으로 복사하고 대각선을 1로 만듭니다. 즉, 상관 관계 (x, y) = 상관 관계 (y, x)와 상관 관계 (x, x)는 항상 1입니다. 그러나 이러한 수정으로 코드도 많은 시간 (약 7-8 분)이 소요됩니다. 다른 제안?상관 관계 테이블

My code 
for x in data_set: 
    for y in data_set: 
     correlation = np.corrcoef(x,y)[1][0] 
+0

['다중 처리] '(https://docs.python.org/3/library/multiprocessing.html)를 사용하는 것이 상당히 평행 할 수 있으므로 문제가 있습니까? – CoryKramer

+0

아니요, 그 패키지에 대해 아무것도 모릅니다. 멀티 프로세싱의 도움을 받아이 문제에 대한 더 빠른 해결책을 쓸 수 있습니까? –

+0

최소한의 재현 가능한 예제를 제공 할 수있는 데이터 세트가 무엇인지 설명해 주시겠습니까? – FLab

답변

1

나는 당신이 2 차원 배열을 생성하고 (하나 쌍의 현명한 상관 관계를 계산하는 데 반대)의 상관 행렬을 계산하여 반드시 빠른 결과를 얻을 수 있습니다 확신합니다.

numpy의 corrcoef 문서에서 입력은 다음과 같이 입력 할 수 있습니다. "여러 변수와 관측 값이 포함 된 1-D 또는 2-D 배열. m의 각 행은 변수를 나타내고 각 열은 모든 변수의 단일 관찰을 나타냅니다." https://docs.scipy.org/doc/numpy/reference/generated/numpy.corrcoef.html

+0

좋은 생각! 나는 그것에 대해 생각합니다. –