python - python 5 d矩阵写入nc文件
问题描述
我最近从 MATLAB 迁移到 Python。
问题是我正在从一个文件中读取一个U 变量.nc
,该文件的形状是(2920 x 2 x 292 X 326)=[(365x8) x level x lat x lon]
365 天,一天是 8 次数据。
我想让他们每月平均文件有 8 个级别,我已经这样做了,所以我的矩阵现在是U_temp=[12x8x2x292x326]
12 个月,8 次,经纬度和经度数据。
所以我想每年打印一个我做不到的文件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
解决方案
我认为问题发生在这里U[:,:,:,:] = U[:,:,:,:]
,等式的正确部分应该是一个矩阵,其中包含你想要放入 U[975, 1000]
中的值level[:] = [975, 1000]
。并检查wrtnc(file,U)
,下面的代码中没有变量file
。
推荐阅读
- node.js - Angular Route 在浏览器刷新时显示原始 JSON
- powershell - Powershell中的行继续中间字符串
- javascript - 如何在 Vue 兄弟组件之间传递值,而不使用“参数”?
- javascript - 生成随机 Firebase 身份验证 UID 以从 Firestore 查询随机用户文档?
- python - 我需要解开这个小谜题。它有描述 pyphp64
- c# - Inno Setup 以字符串为参数调用 DLL
- java - Eclipse java - 不同源文件夹的不同代码模板
- typescript - Vue 道具初始化/变异
- wordpress - 未登录时自定义帖子类型 404 错误
- python - PyCharm 不会导入 PyGame