import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as plt
nc数据存储
#创建输入数据
x = np.linspace(70,100,20)
y = np.linspace(10,30,20)
np_data1 = np.zeros((10,20,20))
np_data2 = np.ones((10,20,20))
np_data3 = np.arange(4000).reshape((10,20,20))
rng = np.random.default_rng()
rng.shuffle(np_data3, axis=2)
#创建nc数据
Data = nc.Dataset('nc_test.nc', 'w', format='NETCDF4')
Data.createDimension('lon',20) #创建经度维数
Data.createDimension('lat',20) #创建纬度维数
Data.createDimension('time',10) #创建时间维数
#创建属性,并存入属性值
lon = Data.createVariable('lon',np.float32,'lon') #创建经度
lon.setncattr_string('name','longitude') #添加属性注释
lon[:]= x
lat = Data.createVariable('lat',np.float32,'lat') #创建纬度
lat.setncattr_string('name','lat') #添加属性注释
lat[:]= y
var1 = Data.createVariable('var1',np.float32,('time','lat','lon')) #创建数据1 三维为时间 纬度 经度
var1[:] = np_data1
var2 = Data.createVariable('var2',np.float32,('time','lat','lon')) #创建数据2 三维为时间 纬度 经度
var2[:] = np_data2
var3 = Data.createVariable('var3',np.float32,('time','lat','lon')) #创建数据2 三维为时间 纬度 经度
var3[:] = np_data3
#关闭
Data.close()
读取
读取
data = nc.Dataset('nc_test.nc')
#获取属性
data.variables.keys()
data['var1'].shape
plt.imshow(data['var3'][0])
基本运算
df = np.asarray(data['var3'])
np.mean(df,axis=0) #按时间轴计算均值
np.mean(df[0]) #计算一单位时间均值
np.std(df,axis=0) #按时间轴计算标准差
np.sum(df,axis=0) #计算每个格点
#当数据中含有nan值
np.nanmean(df,axis=0)