如何找到与特定选择的 xarray 等效的索引?

我有一个 xarray 数据集。


<xarray.Dataset>

Dimensions:           (lat: 92, lon: 172, time: 183)

Coordinates:

  * lat               (lat) float32 4.125001 4.375 4.625 ... 26.624994 26.874996

  * lon               (lon) float32 nan nan nan ... 24.374996 24.624998 24.875

  * time              (time) datetime64[ns] 2003-09-01 2003-09-02 ... 2004-03-01

Data variables:

    swnet        (time, lat, lon) float32 dask.array<shape=(183, 92, 172), chunksize=(1, 92, 172)>

查找最近的经纬度

df.sel(time='2003-09-01', lon=6.374997, lat=16.375006, method='nearest')


需要找

此特定位置的索引。基本上,row-column在网格中。最简单的方法是什么?


试过了

nearestlat=df.sel(time='2003-09-01', lon=6.374997, lat=16.375006, method='nearest')['lat'].values 

nearestlon=df.sel(time='2003-09-01', lon=6.374997, lat=16.375006, method='nearest')['lon'].values 

rowlat=np.where(df['lat'].values==nearestlat)[0][0] 

collon=np.where(df['lon'].values==nearestlon)[0][0] 

但我不确定这是否是正确的方法。我怎样才能“正确”地做到这一点?


白衣染霜花
浏览 63回答 2
2回答

慕桂英4014372

我同意找到与.sel操作相关的索引比预期的要复杂!此代码有效:import xarray as xrds = xr.tutorial.open_dataset('air_temperature')ilon = list(ds.lon.values).index(ds.sel(lon=250.0, method='nearest').lon)ilat = list(ds.lat.values).index(ds.sel(lat=45.0, method='nearest').lat)print(' lon index=',ilon,'\n','lat index=', ilat)生产:&nbsp;lon index= 20&nbsp;&nbsp;lat index= 12万一有人想知道为什么要这样做,我们用它来研究图像的时间堆栈,我们有兴趣在指定日期选择紧接在图像之前的图像:import xarray as xrds = xr.tutorial.open_dataset('air_temperature')ilon = list(ds.time.values).index(ds.sel(time='2013-06-01 00:00:00', method='nearest').time)print(idx)产生848

猛跑小猪

我认为这样的事情应该有效:ds = xr.tutorial.open_dataset('air_temperature')idx = ds.indexes["time"].get_loc('2013-06-01 00:00:00',&nbsp; method="nearest")print(idx)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python