如何在 xarray 中创建标量维度?

How to create scalar dimension in xarray?

我正在尝试在 xarray 中创建一个数据集,我打算稍后将其写入 netcdf,但由于我的时间维度是标量,所以出现错误。

df = xr.Dataset(
        data_vars={'latentHeating':    (('time', 'level', 'latitude', 'longitude' ), lh),
                   'surfacePrecipRate':    (('time', 'latitude', 'longitude' ), spr),
                   'stratiformFraction':    (('time', 'latitude', 'longitude'), stratfrac)},
        coords={ 'time':time_,
                'level': lev,
                'longitude': lon,
                'latitude': lat,
            })

ValueError                                Traceback (most recent call last)

ValueError: dimension 'time' already exists as a scalar variable

这是 xarray 中的一个已知问题 您可以查看 https://github.com/pydata/xarray/issues/1709

作为变通方法,您可以使用 numpy 函数在 xarray 中创建标量维度 atleast_1d

您可以尝试以下方法

df = xr.Dataset(
        data_vars={'latentHeating':    (('time', 'level', 'latitude', 'longitude' ), lh),
                   'surfacePrecipRate':    (('time', 'latitude', 'longitude' ), spr),
                   'stratiformFraction':    (('time', 'latitude', 'longitude'), stratfrac)},
        coords={ 'time':np.atleast_1d(time_),
                'level': lev,
                'longitude': lon,
                'latitude': lat,
            })