Xarray - 将数据变量更改为维度
Xarray - Changing Data Variables into Dimensions
我正在处理大量在不同经度和纬度测量的温度数据,我可以像这样从 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 ...
为了更方便地评估结果,我想将变量"longitude"和"latitude"更改为这样的尺寸或坐标。
<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'])
和许多不同的函数到达这里,但我无法根据经度和纬度来设置温度。你能告诉我如何解决这个问题吗?
你见过 xarray 中的 Multi-index 功能吗?它可能不完全是您正在寻找的东西,并且存在一些限制(例如,据我所知,尚不支持 netCDF 的序列化),但也许这对您来说没问题。想法是将 measurement_number 变成一个 pandas 以纬度和经度作为虚拟坐标的多索引。
然后,您也可以在多索引坐标上使用 .sel -> Multi-level indexing
我正在处理大量在不同经度和纬度测量的温度数据,我可以像这样从 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 ...
为了更方便地评估结果,我想将变量"longitude"和"latitude"更改为这样的尺寸或坐标。
<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'])
和许多不同的函数到达这里,但我无法根据经度和纬度来设置温度。你能告诉我如何解决这个问题吗?
你见过 xarray 中的 Multi-index 功能吗?它可能不完全是您正在寻找的东西,并且存在一些限制(例如,据我所知,尚不支持 netCDF 的序列化),但也许这对您来说没问题。想法是将 measurement_number 变成一个 pandas 以纬度和经度作为虚拟坐标的多索引。 然后,您也可以在多索引坐标上使用 .sel -> Multi-level indexing