首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python - netCDF文件中参数的空间方差

Python - netCDF文件中参数的空间方差
EN

Stack Overflow用户
提问于 2019-02-28 22:39:09
回答 2查看 123关注 0票数 0

我有一个netCDF文件monthly_qc_data.nc,它在0.5º的边界框中表示一个调用Lai_500m的参数的月值。

考虑到边界框/netCDF文件的中心是参考点。我想计算参数Lai_500m与此参数在边界框中心的值之间的差值。

为此,我使用以下代码:

代码语言:javascript
运行
复制
##SPATIAL VARIANCE
os.chdir(inbasedir)
data = xr.open_dataset('monthly_qc_data.nc')
ref_data = data.where((data['lat'] ==  10) & (data['lon'] == 10)) #considering the poin lat:10 and lon:10 as the center of the bounding box
dif_data = data.where((data['Lai_500m'] - ref_data))

不幸的是,这将返回以下错误:

代码语言:javascript
运行
复制
ufunc 'bitwise_and' not supported for the input types, and the inputs could not be 
safely coerced to any supported types according to the casting rule ''safe''

我还尝试使用python netCDF4:

代码语言:javascript
运行
复制
from netCDF4 import Dataset 
os.chdir(inbasedir)
dataset = Dataset("monthly_qc_data.nc")
dif_data = dataset.variables['Lai_500m'][:,:,:] - dataset.variables['Lai_500m'][:,10,10] 

谁也返回了(明显的)错误:

代码语言:javascript
运行
复制
ValueError: operands could not be broadcast together with shapes (12,120,120) (12,) 

有谁知道如何克服这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-01 06:34:34

您应该能够以浮点型的形式获取ref_data,然后从数据集中减去。

代码语言:javascript
运行
复制
ref_data = float(data.Lai_500m.sel(lat=10.0, lon=10.0).values)
dif_data = data.Lai_500m - ref_data
票数 2
EN

Stack Overflow用户

发布于 2019-03-03 04:33:55

我知道您正在寻找python的答案,但为了以防万一,下面是如何使用cdo从命令行执行相同功能的方法:

代码语言:javascript
运行
复制
cdo sub in.nc -remapnn,lon=10/lat=10 in.nc diff.nc
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54928140

复制
相关文章

相似问题

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