如何使用循环用相关值填充3D矩阵?

时间:2018-08-05 20:01:14

标签: python

我正在尝试在降雨时间序列和SST之间进行空间降雨关联。我的代码如下

#'OND_rainfall_index_list' is a list of 27 (1990-2016) values of spatially averaged rainfall in eastern Africa
#trial_x is a (27,48,80) multidimensional array of SST (time, lat,lon) in the Indian Ocean 
corr = np.zeros((27,48,80))
corr.shape
for m in range(48):
    for n in range(80):
        corr[m,n]=stats.pearsonr(OND_rainfall_index_list, trial_x[:,m,n])[0]

OND_rainfall_index_list是东部非洲27个空间平均降雨量的list,而trial_x是SST的多维数组。

我正在尝试初始化一个矩阵,然后可以用相关值填充该矩阵。我想最后得到一个与trial_x大小相同的矩阵,但要使用相关值。我该怎么办?目前,在运行循环时出现以下错误。

> IndexError: index 48 is out of bounds for axis 1 with size 48

1 个答案:

答案 0 :(得分:1)

您的矩阵df[nm1] <- df[i1] + df[i2] 的形状为corr。这是3D阵列。

但是,您有一行:

(27,48,80)

您期望corr[m,n]=stats.pearsonr(OND_rainfall_index_list, trial_x[:,m,n])[0] 与什么相关?第一维和第二维还是第二维和第三维?

我希望第二和第三。

因此,如果输出如下:

corr[m, n]

的大小为stats.pearsonr(OND_rainfall_index_list, trial_x[:,m,n])[0] ,然后使用:

(27,)

但如果大小为corr[:, m,n]=stats.pearsonr(OND_rainfall_index_list, trial_x[:,m,n])[0] ,请使用:

(1,)