掩码阵列的相关计算:-地球科学堆栈交换江南电子竞技平台江南体育网页版 最近30个来自www.hoelymoley.com 2023 - 03 - 15 - t01:18:36z //www.hoelymoley.com/feeds/question/24985 https://creativecommons.org/licenses/by-sa/4.0/rdf //www.hoelymoley.com/q/24985 3. 掩码阵列相关计算: Ruby //www.hoelymoley.com/users/28634 2023 - 03 - 03 - t12:26:36z 2023 - 03 - 08 - t16:57:37z

我有一个海洋表面温度时间序列,我想计算热带地区(30.0N到30S)节点之间的(Pearson)相关系数。在时间序列中,土地信息被掩盖。我不知道在相关性计算中如何处理蒙面数据。请帮助。我在这里使用的数据是在这个链接https://drive.google.com/file/d/1SVKQ4uBDEZOuN7_ftd5tqpF9_NGKY3pZ/view?usp=sharing

我尝试了以下代码,这没有工作:

 temp5 = 'sst.day.mean.1983。fh5 =数据集(temp5, mode = 'r') sst5 = fh5。变量['sst'][:365] time = fh5。变量['time'][:] lat = fh5。变量['lat'][210:510][::35] #热带纬度lon = fh5。变量['lon'][::45] mar_05=[] for I in range(len(lat)): for j in range(len(lon)): for m in range(len(lat)): for n in range(len(lon)): mar_05.append(np。corrcoef (sst5 [59:90, i, j], sst5 [59:90, m, n] [0,1])) df = pd。DataFrame(data = mar_05) 
//www.hoelymoley.com/questions/24985/-/25008#25008 1 掩码阵列相关性计算Deditos回答: Deditos //www.hoelymoley.com/users/106 2023 - 03 - 07 - t13:00:19z 2023 - 03 - 08 - t16:57:37z

我要冒险猜测,你正在使用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,…, n = 0,…, 31 

当您使用sst5[59:90,i,j]sst5[59:90,m,n]时,您不是从latlon变量中的热带点提取数据,您只是从完整的全局数组的角落提取数据,即sst5[:, 0:8, 0:31]。您可以通过打印sst5来查看这一点。形状在你的循环中,它将显示

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

这个角在南极洲,因此没有SST数据,numpy。corrcoef将只看到缺失的数据值,并试图除以零协方差,产生NaN值。

RuntimeWarning: invalid value occurred in true_divide c /= stddev[:, None] 

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

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

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

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

但是,就我个人而言,我会消除循环,并将其作为一个全数组操作:

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

一个感兴趣的点的输出的快速图片:< A href="https://i.stack.imgur.com/bzCFL.png" rel="nofollow noreferrer">enter image description here

Baidu
map