- 积分
- 5966
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-9-11
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
想从EC Reanalysis读取变量做一些计算,比如通过T和RH计算Td。数据集为27层等压面,0.25*0.25度,中国西南地区各要素,单个要素的shape(time,level,lon,lat):(612, 27, 81, 121),程序如下(Td计算公式只是个示例,想试试数组和标量是否可以直接运算,因为numpy有broadcast这一功能):
- import numpy as np
- from netCDF4 import Dataset
- ncfile='F:\\2018\\ECReanalysis\\interim2014-05-09.nc'
- f=Dataset(ncfile,'r')
- t=f.variables['t']
- T=6.112*np.exp((t-263.15)/t)
复制代码 得到报错为:
Traceback (most recent call last):
File "<ipython-input-2-1e9334c64d98>", line 1, in <module>
runfile('F:/2018/ShortTimeRainForecast.py', wdir='F:/2018')
File "D:\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfile
execfile(filename, namespace)
File "D:\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 87, in execfile
exec(compile(scripttext, filename, 'exec'), glob, loc)
File "F:/2018/ShortTimeRainForecast.py", line 24, in <module>
T=6.112*np.exp((t-263.15)/t)
TypeError: unsupported operand type(s) for -: 'netCDF4._netCDF4.Variable' and 'float'
说明t是netCDF4._netCDF4.Variable数据类型,不支持numpy的broadcast。
那么试一试把t转成numpy.ndarray:
- import numpy as np
- from netCDF4 import Dataset
- ncfile='F:\\2018\\ECReanalysis\\interim2014-05-09.nc'
- f=Dataset(ncfile,'r')
- T=np.asarray(f['t'])
复制代码 直接死机,照说(612, 27, 81, 121)这种数据量应该也不算特别大吧。不知道谁有合适的办法,以及netCDF4._netCDF4.Variable这种数据类型该如何处置,谢谢解答!
|
|