Python 3D数组。计算R平方

时间:2014-06-19 18:31:23

标签: python-2.7 numpy

我有3个维度的2个ndarray。我需要计算这些ndarray上的Rsquared。澄清。

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 个答案:

答案 0 :(得分:1)

如果传递了两个数组,stats.linregress期望两个数组是1维的。

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)