再详细一点
链接
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)你不是在从你的热带点提取数据纬度而且变量,你只是从角落里提取数据满,全球数组,我e。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[:,无]中遇到的无效值

我猜你可以提取出来您可以将程序修改为子集你想要的点变成一个有形状的数组(NTIME NPOINTS)sst5循环之前的数组:

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

而且调用np.ma.corrcoef在那一次然后引用循环中的这个数组:

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)

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

我猜你用的是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)你不是在从你的热带点提取数据纬度而且变量,你只是从数组的一角提取数据。是南极洲,因此没有海表温度数据和numpy.corrcoef将只看到缺失的数据值,并试图除以零协方差,产生NaN值。当发生这种情况时,我的Numpy会发出以下警告:

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

我猜你可以提取出来你想要的点变成一个有形状的数组(NTIME NPOINTS)而且调用np.ma.corrcoef在那一次作为一个整体数组操作,而不是使用所有这些嵌套循环。

我猜你用的是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)你不是在从你的热带点提取数据纬度而且变量,你只是从角落里提取数据满,全球数组,我e。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

我猜你用的是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)你不是在从你的热带点提取数据纬度而且变量,你只是从数组的一角提取数据。这里是南极洲,因此没有海表温度数据numpy.corrcoef将只看到缺失的数据值,并试图除以零协方差,产生NaN值。当发生这种情况时,我的Numpy会发出以下警告:

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

我猜你可以把你想要的点提取到一个有形状的数组中(NTIME NPOINTS)并调用np.ma.corrcoef作为一个完整的数组操作,而不是使用所有这些嵌套循环。

Baidu
map