2024-04-26 17:35:07 发布
网友
在xarray中打开netcdf文件时,我可以使用切片来选择一个区域,使用预处理ie:
SSA=dict(lat=slice(-38,-34),lon=slice(138,141)) def Mask(ds): return ds.sel(**SSA) xr.open_mfdataset(filelist, preprocess=Mask)
但是,什么是最有效的方法来提取一个由经纬度分开的点列表的数据??在
可以使用DataArray作为索引器来选择点列表。这将导致数组沿着索引器的坐标重新编制索引。在
DataArray
直接来自More Advanced Indexing上的文档:
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
da.sel(longitude=df.longitude.to_xarray(), latitude=df.latitude.to_xarray())
可以使用
DataArray
作为索引器来选择点列表。这将导致数组沿着索引器的坐标重新编制索引。在直接来自More Advanced Indexing上的文档:
索引数组也可以很容易地从pandas
DataFrame
中取出,比如da.sel(longitude=df.longitude.to_xarray(), latitude=df.latitude.to_xarray())
,这将导致DataArray
被数据帧的索引重新索引。在相关问题 更多 >
编程相关推荐