我有两组数据数组代表三个坐标轴上的值(lat、lon、time);一组数据数组表示变量varA,一组表示变量varB(示例如下)。在
varA
<xarray.DataArray 'varA' (time: 32, lat: 20, lon: 18)>
array([[[...
... ]]])
Coordinates:
* lat (lat) float64 4.75 4.25 3.75 3.25 2.75 2.25 1.75 1.25 0.75 0.25 ...
* lon (lon) float64 33.25 33.75 34.25 34.75 35.25 35.75 36.25 36.75 ...
* time (time) datetime64[ns] 1979-01-01 1980-01-01 1981-01-01 ...
有4个不同的双重奏瓦拉和瓦布。我做了一个散点图,显示了varA对varB的每个lat、lon和time,以及每个duo(varA1对varB1,varA2对varB2……)。,并将其可视化在1个图形上(所有数据数组都具有完全相同的坐标)。在
^{pr2}$完整散射图函数工作正常,但现在我想为完整散射图添加一条趋势线(并找到其方程)。事实上,我想研究varA和varB之间的长期(随时间)和大规模(over lat和lon)关系;我知道varA值越高,varB值越高(无论在哪个位置或在什么时间),但是我想得到1个回归方程,相关系数和RMSE(即,量化它们的关系)。在
这可能吗?我想我需要每个单元所有vara的平均值[lat,lon,time],所有varb都是一样的;所以如下所示:
avrR = wfdei_rain * 0
avrY = wfdei_rain * 0
for t in range(varA1['time'].size) :
for la in range(varA1['lat'].size) :
for lo in range(varA1['lon'].size) :
avrA[la,lo,t] = float(sum([varA1[la,lo,t],varA2[la,lo,t],varA3[la,lo,t],varA4[la,lo,t])) / 4
avrB[la,lo,t] = float(sum([varB1[la,lo,t],varB2[la,lo,t],varB3[la,lo,t],varB4[la,lo,t])) / 4
z = np.polyfit(avrA[:,:,:],avrB[:,:,:],1)
p = np.poly1d(z)
plt.plot(x,p(x))
print('y=%.6fx+(%.6f)'%(z[0],z[1])
这将给出polyfit函数的错误('expected 1D vector for x')。 我没有找到如何调整polyfit来使用DataArrays-3D,我找到了一个相关的帖子:Applying numpy.polyfit to xarray Dataset,但它对我没有帮助。在
有什么更好的方法来解决这个问题吗?在
提前谢谢!在
目前没有回答
相关问题 更多 >
编程相关推荐