我有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
答案 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)