近期,在处理数据分析资料时,需要对数据进行空间窗口滑动,统计每个窗口内数据的数目等信息。举个例子,对数据进行每5°为间隔的经纬度滑动,每次都是一个5×5的窗口。其实,对于空间窗口的滑动,无非是对经纬度数据进行循环读取。对于纬度的滑动,在此之前我已经写过一些内容:
1、将纬度按照10°为区间进行划分,并筛选在不同区间内sss的个数
这次的方法就是再其基础上,加上对于经度的循环罢了,感兴趣的同学朋友可以翻看一下前面的内容。下面直接开始分享今天的算法教程吧~
我读取的数据主要是sea surface Temperature(sst),它是一个三维的数据(时间×纬度× 经度)
#read nc file path0='D:\\sst.nc' ds=xr.open_dataset(path0).sortby("lat", ascending= True)#转换lat排序 sst=ds.sel(lat=slice(-20,20),time=slice('2010','2010'))#选择某一年的数据 ### 读取经纬度数据 lons=sst.lon.data lats=sst.lat.data # 挑出nan值的数据,方便后面的数据计算 masker=(np.isfinite(sst_day) & np.isfinite(( olr_day))).data # 17和144分别是经纬度的个数,也可以用sst.lat.shape[0]\sst.lon.shape[0]表示,我这里直接打出个数 for i in range(1,17,1): for j in range(1,144,1): sub_sst=( sst_day[:,i-1:i+2,j-1:j+2]).data[masker[:,i-1:i+2,j-1:j+2]]
这样,读取出来的sub_sst应该是循环到最好的一个5×5的空间窗口了。下面,大家就可以根据需要进行对应的计算就好了
一个努力学习python的海洋菜鸡 水平有限,欢迎指正!!! 欢迎关注、点赞、评论、收藏。