2014-06-19 2 views
1

3 차원으로 2 개의 ndarrays가 있습니다. 이 ndarrays를 통해 Rsquared를 계산해야합니다. 명확히하기.파이썬 3D 배열. R 제곱을 계산하십시오.

Array1.shape = Array2.shape = (100, 100, 10) 

그래서 ...

resultArray = np.ones(100*100).reshape(100,100) 

for i in range(Array1.shape[0]: 
    for j in range(Array1.shape[1]: 
     slope, intercept, r_value, p_value, std_err = scipy.stats.stats.linregress(Array1[i:i+1,j:j+1,:],Array1[i:i+1,j:j+1,:]) 
     R2 = r_value**2 
     result[ i , j ] = R2 

답변

1

통과 두 배열하면, stats.linregress는 두 배열은 1 차원이 될 것으로 기대하고있다.

Array1[i:i+1,j:j+1,:]은 모양이 (1, 1, 10)이므로 3 차원입니다. 대신 Array1[i, j, :]을 사용하십시오.

import numpy as np 
import scipy.stats as stats 

Array1 = np.random.random((100, 100, 10)) 
Array2 = np.random.random((100, 100, 10)) 
resultArray = np.ones(100*100).reshape(100,100) 
for i in range(Array1.shape[0]): 
     for j in range(Array1.shape[1]): 
      slope, intercept, r_value, p_value, std_err = stats.linregress(
       Array1[i, j, :], 
       Array1[i, j, :]) 
      R2 = r_value**2 
      resultArray[ i , j ] = R2 

print(resultArray) 
+0

감사합니다. 내가 작성한 작업 방식은 입력 데이터가 잘못되었지만 코드가 제 것보다 깨끗하기 때문에 여러분의 제안을 유지할 것입니다. – wfoschiera

+0

@ wfoschiera 원하는 경우 왼편에있는 화살표를 클릭하면 대답을 수락 할 수 있다는 것을 잊지 마세요. –

+0

감사합니다. 그래서 모든 데이터를 처리 할 시간이 아직 남아 있습니다. 저는 일반적으로 모양이 6000 개 이상인 배열 (800,870,10)에 대해 말하고 있습니다. 어떤 아이디어라도 감사 할 것입니다. – wfoschiera

관련 문제