выбрать части из DataArray, созданного с помощью xarray (python) - PullRequest
0 голосов
/ 18 марта 2019
    ds = xr.open_dataset(f)
    hlos = ds.rayleigh_hloswind_windresult_rayleigh_wind_velocity.data
    lats = ds.rayleigh_geolocation_windresult_geolocation_latitude_cog.data 

>>> hlos
array([  419., -1013.,  -584., ..., -6791., 32767., 32767.], dtype=float32)
>>> lats
array([84.36244 , 84.359972, 84.371422, ..., 83.43806 , 83.672662,
       83.513285])

f - это файл netcdf с переменной hlos, которая является скоростью ветра, а лат - широтой.Я создал DataArray:

da_lat = xr.DataArray(hlos, dims=['lat'], coords = {'lat': lats})
>>> da_lat
<xarray.DataArray (lat: 19703)>
array([  419., -1013.,  -584., ..., -6791., 32767., 32767.],
      dtype=float32)
Coordinates:
  * lat      (lat) float64 84.36 84.36 84.37 ... 83.67 83.51

Теперь я хотел бы выбрать как: da_lat.sel(lat = 84.36).values, но это дает мне KeyError: 84.36 Кто-нибудь знает, в чем проблема в этом случае?

1 Ответ

3 голосов
/ 18 марта 2019

KeyError является результатом того, что нет точного совпадения для широты 84,36 в координате широты. Точное совпадение выглядит так, как если бы оно было 84,36244 (или, возможно, 84,359972). Xarray предлагает хороший способ обойти эту проблему, так как вы можете указать method в методе sel, который контролирует, как он работает с неточными совпадениями.

В этом случае, похоже, вы захотите что-то вроде method='nearest':

da_lat.sel(lat=84.36, method='nearest')

Подробнее см. В документации для Dataset.sel.

...