首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用nc文件编写Python5d矩阵

用nc文件编写Python5d矩阵
EN

Stack Overflow用户
提问于 2021-04-12 07:43:54
回答 1查看 34关注 0票数 0

我最近从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文件,这是我做不到的。

我尝试了很多方法,但都做不到。由于我正在计算一个月和时间的新维度,所以我也在考虑这一点。

事先非常感谢..。

这是我的密码:

代码语言:javascript
复制
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()

正确的修改代码是这个

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2021-04-12 08:19:35

我认为这个问题发生在这里,U[:,:,:,:] = U[:,:,:,:],方程的右边部分应该是一个矩阵,其中包含你想要放进U中的值,比如level[:] = [975, 1000]中的[975, 1000]。检查wrtnc(file,U),下面的代码中没有变量file

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67054381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档