You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:18:04