python - 选定点的 xarray 掩码
问题描述
在 xarray 中打开 netcdf 文件时,我可以使用切片来选择一个区域,使用预处理,即:
SSA=dict(lat=slice(-38,-34),lon=slice(138,141))
def Mask(ds):
return ds.sel(**SSA)
xr.open_mfdataset(filelist, preprocess=Mask)
但是,按纬度和经度为单独的点列表提取数据的最有效方法是什么?
解决方案
可以使用 aDataArray
作为索引器来选择点列表。这将导致数组沿着索引器的坐标重新索引。
直接来自更高级索引的文档:
In [78]: da = xr.DataArray(np.arange(56).reshape((7, 8)), dims=['x', 'y'])
In [79]: da
Out[79]:
<xarray.DataArray (x: 7, y: 8)>
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12, 13, 14, 15],
[16, 17, 18, 19, 20, 21, 22, 23],
[24, 25, 26, 27, 28, 29, 30, 31],
[32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47],
[48, 49, 50, 51, 52, 53, 54, 55]])
Dimensions without coordinates: x, y
In [80]: da.isel(x=xr.DataArray([0, 1, 6], dims='z'),
....: y=xr.DataArray([0, 1, 0], dims='z'))
....:
Out[80]:
<xarray.DataArray (z: 3)>
array([ 0, 9, 48])
Dimensions without coordinates: z
索引数组也可以很容易地从 pandas 中提取出来,DataFrame
例如da.sel(longitude=df.longitude.to_xarray(), latitude=df.latitude.to_xarray())
,这将导致DataArray
被DataFrame 的索引重新索引。
推荐阅读
- python - TypeError:需要一个类似字节的对象,而不是python3 http请求中的'str'
- assembly - 为什么带有-1的IDIV会导致浮点异常?
- java - 如何在具有相同正文的线程中启动新线程?
- opencpu - 如何为 OpenCPU 应用程序设置域名?
- python - 为什么在以下代码中将值自动分配给 new_element
- python - 从图像python中识别明文
- python - 更改部署 Django 项目,在 Django 管理中没有 css 样式
- node.js - 有些交易有效,有些则无效。处理事务时出现 UnhandledPromiseRejectionWarning 和 VM 异常
- aws-lambda - 如何通过 Skill 项目配置 lamda 超时
- php - 正在上传文件,但未在 mysql 中执行查询