在numpy数组或数据帧中添加额外的维度



我有一个名为obs(62824,)的熊猫系列,其温度值如下

0        16.9
1        11.0
2         5.9
3         9.4
4        15.4
... 

我想使用以下代码将我的numpy数组基本转换为xr。DataArray

lat = 35.93679
lon = 14.45663
obs_data = xr.DataArray(obs_tas, dims=['time','lat','lon'], 
coords=[pd.date_range('1979-01-01', '2021-12-31', freq='D'), lat, lon])

我的问题是我得到以下错误

ValueError: dimensions ('lat',) must have the same length as the number of data dimensions, ndim=0

从我的理解是因为numpy数组只有一个维度。我尝试了以下命令

obs = obs[..., np.newaxis, np.newaxis]

然而,没有工作,我仍然得到相同的错误。我怎样才能解决这个问题呢?

您对obs添加尺寸是正确的。

在创建DataArray和API引用中提到,坐标本身应该是类似数组的。

你的latlon是浮子。我相信你所要做的就是把它们包装在一个列表中,像这样:

lat = [35.93679]  # <- list
lon = [14.45663]  # <- list
obs_data = xr.DataArray(
obs[:, None, None], 
dims=['time', 'lat', 'lon'], 
coords=[
pd.date_range('1979-01-01', '2021-12-31', freq='D'), lat, lon
]
)

最新更新