Dataset 在xarray数据集中将尺寸从点坐标更改为纬度

Dataset 在xarray数据集中将尺寸从点坐标更改为纬度,dataset,netcdf,python-xarray,Dataset,Netcdf,Python Xarray,我有尽可能多的坐标站、纬度、经度和时间的数据集。现在数据集使用(站、时间)作为维度,但我希望它使用(纬度、经度、时间) 我在网上查了一下,找到了如何使用它,但我发现它只适用于交换一维空间 有什么建议吗 <xarray.Dataset> Dimensions: (stations: 11, time: 7320) Coordinates: * stations (stations) int64 11425 11426 11427 11428 ... 11433 114

我有尽可能多的坐标站、纬度、经度和时间的数据集。现在数据集使用(站、时间)作为维度,但我希望它使用(纬度、经度、时间)

我在网上查了一下,找到了如何使用它,但我发现它只适用于交换一维空间

有什么建议吗

<xarray.Dataset>
Dimensions:     (stations: 11, time: 7320)
Coordinates:
  * stations    (stations) int64 11425 11426 11427 11428 ... 11433 11434 11435
    lat         (stations) float64 39.54 39.36 39.24 39.07 ... 38.07 37.9 37.81
    lon         (stations) float64 -74.25 -74.4 -74.6 ... -75.19 -75.34 -75.51
  * time        (time) datetime64[ns] 2010-02-01 ... 2010-02-06T01:59:00
Data variables:
    waterlevel  (time, stations) float64 0.0002405 0.0002313 ... -0.01266

尺寸:(站点:11,时间:7320)
协调:
*车站(车站)国际64 11425 11426 11427 11428。。。11433 11434 11435
纬度(站)64 39.54 39.36 39.24 39.07。。。38.07 37.9 37.81
lon(站)浮动64-74.25-74.4-74.6-75.19 -75.34 -75.51
*时间日期时间64[ns]2010-02-01。。。2010-02-06T01:59:00
数据变量:
水位(时间、站)浮动64 0.0002405 0.0002313-0.01266

您可以使用
设置索引
使
协调
纬度
经度
坐标的多索引(如上所述)。在第二步中,您可以取消堆叠多重索引,以生成数据集维度的
lat
lon
。但是,请注意,这将扩大数据集的大小(除非桩号已经位于常规栅格上),用NaN值填充没有桩号的栅格点。对于许多应用,将
维度设置为
lat
lon
的多索引就足够了

将numpy导入为np
作为pd进口熊猫
将xarray作为xr导入
ds=xr.Dataset(
数据变量={“水位”:((“站”,“时间”),np.random.rand(5,20))},
库德={
“车站”:(“车站”、“a”、“b”、“c”、“d”、“e”),
“lon”:(“站”,np.random.rand(5)),
“横向”:(“车站”,np.random.rand(5)),
“时间”:pd.日期范围(起始日期=10-05-2021),周期=20,频率=d),
},
)
#重命名桩号坐标,以免覆盖它
ds=ds.rename_vars({“station”:“station_id”})
#创建多索引坐标
ds\u多索引=ds.set\u索引(
车站=[“纬度”、“经度”]
)
#取消多索引的堆栈
ds_multiindex.unstack()