最近,在处理一些数据时,由于数据是按照每小时进行采样的,为了保持周期的完整性,需要将同一时刻对应的数据进行平均处理。
举个例子:
第一行是1-12小时;
第二行从第一行第2个小时对应的列数开始排1-12小时;
第三行从第一行第3个小时对应的列数开始排1-12小时;
、、、
依次同理。
在python中如何实现呢?
1、每一行的数据存储在不同的nc文件内==》循环读取nc文件,
2、创建一个都是nan值的矩阵,方面后续将数据存入,
3、写一个循环,使得每次数据依次间隔一个位置存在每一行中。
循环读取文件很简单,如果命名有一定规律的话,可以参考我前面的文章
;主要使用
字符串拼接和glob函数
import numpy as np import netCDF4 as nc import xarray as xr import glob # 循环读取nc文件 path='D:\\data\\' file='*.nc' filelist=glob.glob(path=file) for f in filelist: data=xr.open_dataset(f) # 构建空矩阵,循环插入 a=np.random.rand(30) a=a.reshape(5,6) b= np.empty((5, 30,)) * np.nan ind=a[0,:] # 循环填入矩阵 for i in range(len(a)): ind=a[i,:] b[i,i:i+len(ind)]=ind #设置插入的间隔,这里间隔是1
初步的实现结果如下,这里我只是给了一个普通的例子。有兴趣的小伙伴可以将a换成你的nc数据,b根据对应的数据a设置相应的矩阵大小