我最近从MATLAB迁移到Python。
问题是,我正在从一个文件中读取一个.nc U变量,该文件的形状为(2920 x 2 x 292 X 326)=[(365x8) x level x lat x lon],其中365天是一天中数据的8倍。
我想让他们的每月平均档案与8个水平,我已经这样做了,我的矩阵现在是U_temp=[12x8x2x292x326],其中12个月,8次,lat,和长数据准备。
所以我想把每年的U_temp打印成一个.nc文件,这是我做不到的。
我尝试了很多方法,但都做不到。由于我正在计算一个月和时间的新维度,所以我也在考虑这一点。
事先非常感谢..。
这是我的密码:
import netCDF4 as nc
import numpy as np
import copy
filename = 'monthly_U_'+str(i)+'.nc'
ds = nc.Dataset(filename,'w',format='NETCDF4')
#ds = nc.Dataset('new3.nc','w',format='NETCDF4')
#print(ncfile)
### creating diminsion
month_dim= ds.createDimension('month', 12)
time_dim= ds.createDimension('time', 8)
level_dim= ds.createDimension('level', 2)
lat_dim = ds.createDimension('lat', 292)
lon_dim = ds.createDimension('lon', 326)
#### creating varaiables
month = ds.createVariable('month','f4', ('month',))
time= ds.createVariable('time','f4', ('time',))
level= ds.createVariable('level','f4', ('level',))
lat= ds.createVariable('lat','f4', ('lat',))
lon= ds.createVariable('lon','f4', ('lon',))
U=ds.createVariable('U','f4', ('month','time','level','lat','lon',))
U.units='m/s'
#### puting value
month[:]= np.arange(start=0, stop=12, step=1)
time[:]= np.arange(start=0, stop=24, step=3)
lat[:] = np.linspace(5, 40, num=nlat)
lon[:] = np.linspace(60, 99, num=nlon)
level[:] = [975, 1000]
U[:,:,:,:,:] = U[:,:,:,:,:]
wrtnc(file,U)
ds.close()正确的修改代码是这个
filename = 'monthly_U_'+str(i)+'.nc'
ds = Dataset(filename,'w',format='NETCDF4')
#ds = nc.Dataset('new3.nc','w',format='NETCDF4')
#print(ncfile)
### creating diminsion
month_dim= ds.createDimension('month', 12)
time_dim= ds.createDimension('time', 8)
level_dim= ds.createDimension('level', 2)
lat_dim = ds.createDimension('lat', 292)
lon_dim = ds.createDimension('lon', 326)
#### creating varaiables
month = ds.createVariable('month','f4', ('month',))
time= ds.createVariable('time','f4', ('time',))
level= ds.createVariable('level','f4', ('level',))
lat= ds.createVariable('lat','f4', ('lat',))
lon= ds.createVariable('lon','f4', ('lon',))
Umean = ds.createVariable('Umean','f4',('month','time','level','lat','lon',))
Umean.units='m/s'
#### puting value
month[:]= np.linspace(1, 12, 12)
time[:]= np.linspace(0, 21, 8)
lat[:] = np.linspace(5, 40, num=nlat)
lon[:] = np.linspace(60, 99, num=nlon)
level[:] = [975, 1000]
Umean[:,:,:,:,:] = U[:,:,:,:,:]
#wrtnc(file,U)
ds.close()
del Umean
del U
del u发布于 2021-04-12 08:19:35
我认为这个问题发生在这里,U[:,:,:,:] = U[:,:,:,:],方程的右边部分应该是一个矩阵,其中包含你想要放进U中的值,比如level[:] = [975, 1000]中的[975, 1000]。检查wrtnc(file,U),下面的代码中没有变量file。
https://stackoverflow.com/questions/67054381
复制相似问题