Xarray-将数据变量更改为维度

时间:2018-09-18 10:52:57

标签: python python-xarray

我正在处理许多在不同的经度和纬度下测量的温度数据,我可以从NetCDF文件中打开它。

<xarray.Dataset>
Dimensions:            (altitude: 801, measurement_number: 3180)
Coordinates:
   * altitude           (altitude) float64 0.0 100.0 200.0 300.0 400.0 500.0 ...
Dimensions without coordinates: measurement_number
Data variables:
    temperature        (measurement_number, altitude) float32 ...
    longitude          (measurement_number) float64 ...
    latitude           (measurement_number) float64 ...

为了更方便地评估结果,我想将变量“经度”和“纬度”更改为这样的尺寸或坐标。

<xarray.Dataset>
Dimensions:            (altitude: 801, measurement_number: 3180, longitude: 36, latitude: 18)
Coordinates:
   * altitude           (altitude) float64 0.0 100.0 200.0 300.0 400.0 500.0 ...
   * longitude          (longitude) float64 -180, -170, -160 ...
   * latitude           (latitude) float64 -90, -80, -70, ...
Dimensions without coordinates: measurement_number
Data variables:
    temperature        (measurement_number, altitude, longitude, latitude) float32 ...

我尝试使用ds.set_coords(['longitude','latitude'])和许多其他功能到达这里,但是我无法根据经度和纬度来调节温度。你能给我个小窍门如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您看过xarray中的Multi-index功能吗?它可能不完全是您要寻找的内容,并且存在一些限制(例如,据我所知,尚不支持序列化到netCDF),但这也许对您来说还可以。想法是将measurement_number转换为以纬度和经度为虚拟坐标的熊猫多索引。 然后,您还可以在多索引坐标上使用.sel-> Multi-level indexing