我有一个xarray数据数组,它的形状如下(1,5,73144,17),我试图删除或删除“level”坐标。最后,我需要变量的shape=(1,5,73144)
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
谢谢你的帮助
晚会迟到了,但万一有人碰到这个
不能删除这样的维度的原因是,数据实际上是由
level
索引的。为了从数据中“删除”级别维度,您需要决定如何减少该维度上的信息你可以用各种方法来做。如果您想从数组中选择一个级别,那么
da.sel
就是您想要的,例如:另一方面,您可能希望聚合整个级别维度的数据?例如,可以取所有级别的平均值:
但是,如果不知道如何从按级别索引的DataArray转换为不按级别索引的DataArray,xarray就无法简单地将其从数据中“删除”——数组仍然会成形
(1,5,73,144,17)
有关这些主题的更多信息,请参阅indexing and selecting data或computation: aggregation上的文档
最初,我观察了drop的行为,发现它并没有删除维度。它可以用来删除数据变量本身
然后我试了一下:
我认为最好的办法是:
我还试过一件事:
看看我是否能概括这个问题。但我不认为这会奏效。 来自文档:http://xarray.pydata.org/en/stable/generated/xarray.Dataset.drop_dims.html
您可以使用
drop_vars
方法:或者
reset_coords('level', drop=True
也会起作用相关问题 更多 >
编程相关推荐