2 / 2
再详细一点
Deditos
  • 3.8 k
  • 15
  • 33

我猜你用的是NOAA OISST数据,尽管我不认为这对这里的答案有什么影响。

注意你的循环,

For I in range(len(lat)): For j in range(len(lon)): For m in range(len(lat)): For n in range(len(lon)):

会生成索引,

I = 0,…, 8 j = 0,…31岁的m = 0, ..., 8 n = 0, ..., 31

将全局SST数组子集sst5 (59:90, i, j)而且sst5 (59:90, m, n)你不是在从你的热带点提取数据纬度而且变量,你只是从完整的全局数组的角落提取数据,即,Sst5 [:, 0:8, 0:31].你可以通过打印出来看到这一点sst5.shape在循环中,会显示,

...(365, 720, 1440)(365, 720, 1440)(365, 720, 1440)(365, 720, 1440)…

这个角在南极洲,因此没有海表温度数据numpy.corrcoef将只看到缺失的数据值,并试图除以零协方差,产生NaN值。当发生这种情况时,我的Numpy会发出以下警告:

RuntimeWarning:在true_divide c /= stddev[:,无]中遇到的无效值

您可以修改您的程序以子集sst5循环之前的数组:

sst5_子集= sst5[59:90, 210:510:35,::45]

然后引用循环中的这个数组:

mar_05.append (np。corrcoef (sst5_subset (:, i, j), sst5_subset (:, m, n)) [0,1])

但是,就我个人而言,我会去掉循环,把它作为一个整个数组的操作来做:

Sst_array = sst5_子集。形状[0],1)。T corr = np.ma.corrcoef(sst_array)

一个兴趣点的快速输出图片:在这里输入图像描述

Deditos
  • 3.8 k
  • 15
  • 33
Baidu
map