Координата удаления массива XArray Python - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть массив xarray, который выглядит следующим образом с формой (1,5,73,144,17), и я пытаюсь удалить или удалить координаты "уровня". Итак, в конечном счете, мне нужно, чтобы переменная имела форму = (1,5,73,144).

stdna
Out[717]: 
<xarray.DataArray 'stack-6e9b86fc65e3f0fda2008a339e235bc7' (variable: 1, week: 5, lat: 73, lon: 144, 
level: 17)>
dask.array<stack, shape=(1, 5, 73, 144, 17), dtype=float32, chunksize=(1, 1, 73, 144, 17), 
chunktype=numpy.ndarray>
Coordinates:
* lon       (lon) float32 0.0 2.5 5.0 7.5 10.0 ... 350.0 352.5 355.0 357.5
* lat       (lat) float32 90.0 87.5 85.0 82.5 80.0 ... -82.5 -85.0 -87.5 -90.0
* level     (level) float32 1000.0 925.0 850.0 700.0 ... 50.0 30.0 20.0 10.0
* week      (week) int64 5 6 7 8 9
* variable  (variable) <U3 'hgt'

Я взглянул на документацию xarray, и она не помогает. Я пробовал разные комбинации вокруг этой идеи, но обычно получаю утверждение ниже, и координаты не удаляются:

s = stdna.drop('level', dim=None)

Dimensions without coordinates: level

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Вы можете использовать метод drop_vars:

In [10]: da
Out[10]:
<xarray.DataArray (dim_0: 2, dim_1: 3)>
array([[0.15928504, 0.47081089, 0.50490985],
       [0.6151981 , 0.41735643, 0.2576089 ]])
Coordinates:
    x        (dim_0, dim_1) float64 0.1593 0.4708 0.5049 0.6152 0.4174 0.2576
Dimensions without coordinates: dim_0, dim_1

In [11]: da.drop_vars('x')
Out[11]:
<xarray.DataArray (dim_0: 2, dim_1: 3)>
array([[0.15928504, 0.47081089, 0.50490985],
       [0.6151981 , 0.41735643, 0.2576089 ]])
Dimensions without coordinates: dim_0, dim_1

В качестве альтернативы reset_coords('level', drop=True также будет работать

0 голосов
/ 03 апреля 2020

Изначально я посмотрел на поведение drop и обнаружил, что оно не удаляет измерение. Может использоваться для удаления переменных данных как таковых.

Тогда я попробовал это:

del stdna['level']

Я бы сказал, что лучший способ - попробовать:

stdna.drop_dims('level')

Есть еще одна вещь, которую я попробовал:

stdna = stdna.drop([i for i in stdna.coords if i not in stdna.dims])

, чтобы посмотреть, смогу ли я обобщить эту проблему. Но не думаю, что это будет хорошо работать. Из документов: http://xarray.pydata.org/en/stable/generated/xarray.Dataset.drop_dims.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...