如何在 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,
})
我正在尝试在 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,
})