如何使用 xarray 从 netcdf 数据集中的变量中删除纬度和经度(它们是常量)?

How to remove latitude and longitude (they're constants) from variables in netcdf dataset using xarray?

我有一个 NetCDF 数据集,我正在尝试从我的数据变量中删除纬度和经度数据,以便可以正确地为它们编制索引。每个数据变量的形状始终为 (x, 1, 1),其中 x 是我的数据点数,1 代表静态经度和纬度。我已经尝试 xarray.Dataset.squeezexarray.Dataset.drop 以及 xarray.DataArray.drop_vars 定位纬度和经度。我还尝试使用 pandas 数据框,纬度和经度仍然粘在我的变量上并阻止正确索引。如果您复制下面我的代码,您将看到变量 'wave_height' 显示形状 (3411,1,1)。我想要一个函数让这个形状变成 (3411,).

url = 'https://dods.ndbc.noaa.gov/thredds/fileServer/data/stdmet/46077/46077h2021.nc'
reqSpectra = urllib.request.Request(url)
with urllib.request.urlopen(reqSpectra) as respS:
    ds_s = xr.open_dataset(io.BytesIO(respS.read()))

wh = ds_s.variables['wave_height']
wh

我会使用 NumPy 的压缩来删除额外的维度。

import urllib
import xarray as xr
import numpy as np
import io
# --------------------------------------------------------------------------
url = 'https://dods.ndbc.noaa.gov/thredds/fileServer/data/stdmet/46077/46077h2021.nc'
reqSpectra = urllib.request.Request(url)
with urllib.request.urlopen(reqSpectra) as respS:
    ds_s = xr.open_dataset(io.BytesIO(respS.read()))
# --------------------------------------------------------------------------
wh = ds_s.variables['wave_height'];
wh = np.squeeze(wh);
wh