Py学习  »  Python

代码共享 | 基于Python的三维格点数据空间去趋势(detrend))

happy科研 • 2 年前 • 309 次点击  

之前用scipy做过了二维数组的去趋势(detrend)了,就比如上次的那个sklearn里附带提到的,具体的可以去看看哈,如果有用的话。为什么要去除趋势等知识可以去搜索一下相关的资料看看。这个测试写得比较潦草,主要是下午还有课,就这样吧先,我会了,类似的相关分析,原理一样的,也很easy,但是既然如此,要不弄一个新东西,就是把周期分析展示到三维地图上来,比如这个,有意思吧,好吧,干饭接着上课了


好吧,干饭接着上课了






但是现在突然不想做这种二维数据的去趋势分析了,因为平时跟地图打交道挺多的,所以现在我想对空间上的数据做去趋势处理,那么有可能实现吗,答案是可以的


使用的数据还是老样子的那个ERSST的netcd三维数据,主要是也没啥其他的数据了哈哈哈,就将就用这个数据做一下测试了


这个nc的格式也是老样子的,(时间,纬度,经纬)这样的三维数据,很简单


要做三维格点数据的去趋势的原理,也是比较简单的,就是遍历每个格点,然后就是老方法scipy登场了


老套路,导入相关的木块并读取nc

from netCDF4 import Dataset as NetCDFFileimport matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.basemap import Basemap 
nc = NetCDFFile('D:\JupyterContent\ERSSTv5.nc')nc


提取值

lat = nc.variables['lat'][:]lon = nc.variables['lon'][:]time = nc.variables['time'][:]tmp = nc.variables['tempanomaly'][:]


绘图出来看看大概,其实这都是老套路了绘图


接下来开始遍历每个格点并做去趋势处理,遍历的就是经纬格点,这就是做这个测试的原理,很easy吧




得出结果,拿去和最开始的那个对比一下,同样是求均值,第一个是没有去除趋势均值,这一个是已经去除趋势的均值,有什么发现了嘛


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/118864
 
309 次点击