max*_*oku 6 python python-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)>
Run Code Online (Sandbox Code Playgroud)
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]
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否是正确的方法。我怎样才能“正确”地做到这一点?
我同意找到与操作相关的索引.sel比人们想象的要困难!
这段代码的工作原理:
import xarray as xr
ds = 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)
Run Code Online (Sandbox Code Playgroud)
生产:
lon index= 20
lat index= 12
Run Code Online (Sandbox Code Playgroud)
为了防止人们想知道为什么要这样做,我们使用它来研究图像的时间堆栈,我们有兴趣选择指定日期的图像之前的图像:
lon index= 20
lat index= 12
Run Code Online (Sandbox Code Playgroud)
产生
848
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2208 次 |
| 最近记录: |