J'ai un DataArray xarray qui ressemble à ceci ci-dessous avec la forme (1,5,73,144,17) et j'essaye de supprimer ou de supprimer les coordonnées "level". Donc, en fin de compte, j'ai besoin que la variable ait shape = (1,5,73,144).
s = stdna.drop('level', dim=None) Dimensions without coordinates: level
J'ai jeté un coup d'œil à la documentation xarray et cela n'aide pas. J'ai essayé différentes combinaisons autour de cette idée, mais je reçois généralement la déclaration ci-dessous et la coordonnée n'a pas été supprimée:
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'
Merci pour votre aide!
3 Réponses :
Au départ, j'ai regardé le comportement de drop et j'ai constaté qu'il ne supprime pas la dimension. Il peut être utilisé pour supprimer des variables de données en tant que telles.
Ensuite, j'ai essayé ceci:
stdna = stdna.drop([i for i in stdna.coords if i not in stdna.dims])
Je dirais que le meilleur moyen serait d'essayer:
stdna.drop_dims('level')
Là est une autre chose que j'ai essayée:
del stdna['level']
pour voir si je peux généraliser ce problème. Mais ne pensez pas que cela fonctionnerait bien. À partir de la documentation: http://xarray.pydata.org/en /stable/generated/xarray.Dataset.drop_dims.html
Vous pouvez utiliser la méthode 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
Sinon, reset_coords ('level', drop = True
fonctionnera également p>
En retard à la fête, mais au cas où quelqu'un d'autre trouverait ça ...
La raison pour laquelle vous ne pouvez pas supprimer une dimension comme celle-ci est que vos données sont en fait indexées par niveau
. Pour "supprimer" la dimension "niveau" de vos données, vous devez décider de la manière dont vous souhaitez réduire les informations le long de cette dimension.
Vous pouvez le faire de toutes sortes de manières. Si vous voulez sélectionner un seul niveau du tableau, alors da.sel
est ce que vous recherchez, par exemple:
stdna.mean(dim='level')