创建xarray Dataset触发ValueError错误的解决方案咨询
错误原因
你声明的变量维度和实际数组维度不匹配:你传入的lat、lon、temperature都是长度为10的一维数组,但你在定义Dataset时给它们指定了["x", "y"]两个维度,维度数量和数组形状无法对应,因此触发ValueError。
解决方案
根据你的数据使用场景,有两种常用的创建方式:
场景1:数据为离散站点观测
如果这10组数据对应10个独立站点的观测值,仅需设置单维度即可,修改后代码如下:
import numpy as np import xarray as xr lat = np.array([32.7847, 32.73563, 35.89973, 34.29235, 35.89155, 33.4852, 33.83317, 35.31416, 35.37686, 34.26979]) lon = np.array([-118.29, -117.9793, -117.77, -117.81, -117.5646, -119.14645, -117.317, -119.81319, -116.64825, -116.96787]) z = np.array([12, 13.44, 2.44445, 5, 24.5, 230.1, 33, 23.4, 1.76668, 9.3]) ds = xr.Dataset( data_vars=dict( temperature=(["site"], z), ), coords=dict( lon=(["site"], lon), lat=(["site"], lat), site=np.arange(10) ), ) print(ds)
场景2:数据为二维栅格
如果你需要构建栅格格式的数据集,需要先将一维的坐标转换为二维网格,同时将温度数组调整为对应二维形状,示例代码如下:
import numpy as np import xarray as xr # 示例假设10个点对应5行2列的栅格,可根据你实际的行列数调整参数 lat_1d = np.array([32.7847, 32.73563, 35.89973, 34.29235, 35.89155]) lon_1d = np.array([-118.29, -117.9793]) lon_2d, lat_2d = np.meshgrid(lon_1d, lat_1d) z = np.array([12, 13.44, 2.44445, 5, 24.5, 230.1, 33, 23.4, 1.76668, 9.3]) z_2d = z.reshape(5, 2) ds_grid = xr.Dataset( data_vars=dict( temperature=(["lat", "lon"], z_2d), ), coords=dict( lon=lon_1d, lat=lat_1d, ), ) print(ds_grid)
内容的提问来源于stack exchange,提问作者holycow
相关产品推荐
相关产品推荐

