2014-06-19 83 views
1

我有2個3維的程序。我需要計算這些ndarrays上的Rsquared。澄清。Python 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預計這兩個數組是一維的。

Array1[i:i+1,j:j+1,:]已經形狀(1, 1, 10),所以它是三維的。所以改爲使用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

謝謝unutbu。我寫的方式有效,我的輸入數據是錯誤的,但我會保留你的建議,因爲你的代碼比我的更乾淨。 – wfoschiera

+0

@wfoschiera不要忘記你可以接受點擊左側箭頭的答案,如果你想... –

+0

謝謝你Saullo。 所以,我仍然沒有時間來處理我所有的數據。我一般在談論超過6000個具有形狀(800,870,10)的陣列。任何想法將不勝感激。 – wfoschiera