如何在xarray中删除一个维度? [复制]

Posted

技术标签:

【中文标题】如何在xarray中删除一个维度? [复制]【英文标题】:How to drop a dimension in xarrray? [duplicate] 【发布时间】:2022-01-16 05:02:01 【问题描述】:

我正在努力在 xarray 中删除整个坐标/维度。我尝试了 drop_dims、drop_vars 等,但始终出现错误。

如何在ds 中完全删除x 坐标/维度:

data = np.random.randn(2, 3)
labels = ['a', 'b', 'c']
ds = xr.Dataset('A': (['x', 'y'], data), 'y': labels)

print(ds)

<xarray.Dataset>
Dimensions:  (x: 2, y: 3)
Coordinates:
  * y        (y) <U1 'a' 'b' 'c'
Dimensions without coordinates: x
Data variables:
    A        (x, y) float64 0.2234 -0.6221 -0.2654 -0.9469 1.95 0.07927

例如,目标是完全删除 x 维度(注意它也表示没有坐标的维度)。

我试过了:

drop = ds.drop_vars('x')

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/tmp/ipykernel_3498931/921199433.py in <module>
----> 1 drop = ds.drop_vars('x')

~/miniconda3/envs/py3_std_maps/lib/python3.9/site-packages/xarray/core/dataset.py in drop_vars(self, names, errors)
   4332             names = set(names)
   4333         if errors == "raise":
-> 4334             self._assert_all_in_dataset(names)
   4335 
   4336         variables = k: v for k, v in self._variables.items() if k not in names

~/miniconda3/envs/py3_std_maps/lib/python3.9/site-packages/xarray/core/dataset.py in _assert_all_in_dataset(self, names, virtual_okay)
   4302             bad_names -= self.virtual_variables
   4303         if bad_names:
-> 4304             raise ValueError(
   4305                 "One or more of the specified variables "
   4306                 "cannot be found in this dataset"

ValueError: One or more of the specified variables cannot be found in this dataset

如何彻底去除xarray数据集中的x变量?

【问题讨论】:

具体来说,请参阅我的回复here - 情况相同。如果数据实际上由该维度索引,则不能只删除该维度。你可以通过它aggregate 或select,但你不能让它消失。接受的答案只是从维度中选择一个任意标签。 【参考方案1】:

试试

ds.sel(x=1, drop=True)

【讨论】:

请注意,如果您这样做,您将忽略一半的数据。数据集实际上沿维度 x 的长度为 2。这不是简单地删除 x - 它相当于 ds[1, :]

以上是关于如何在xarray中删除一个维度? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 xarray 沿时间维度扩展数据变量?

[Xarray] 1. 数据结构

Python气象数据处理进阶之Xarray(6):数据重组与换形

使用xarray python组合空间netcdf文件

在高维 Xtensor 数组中赋值

总结 xarray 数据数组的列表