gpt4 book ai didi

python - 如何使用新维度 reshape xarray 数据

转载 作者:行者123 更新时间:2023-12-04 15:35:42 24 4
gpt4 key购买 nike

我对 xarray 还很陌生图书馆,我陷入了一个看起来相当简单的任务。我在 GRIB 中有全局气候数据不同 30 公里网格的文件。数据如下所示:

<xarray.Dataset>
Dimensions: (time: 736, values: 542080)
Coordinates:
number int64 0
* time (time) datetime64[ns] 2007-12-01 ... 2008-03-01T21:00:00
step timedelta64[ns] 00:00:00
surface int64 0
latitude (values) float64 89.78 89.78 89.78 ... -89.78 -89.78 -89.78
longitude (values) float64 0.0 20.0 40.0 60.0 ... 280.0 300.0 320.0 340.0
valid_time (time) datetime64[ns] 2007-12-01 ... 2008-03-01T21:00:00
Dimensions without coordinates: values
Data variables:
t2m (time, values) float32 247.30748 247.49889 ... 225.18036
Attributes:
GRIB_edition: 1
GRIB_centre: ecmf
GRIB_centreDescription: European Centre for Medium-Range Weather Forecasts
GRIB_subCentre: 0
Conventions: CF-1.7
institution: European Centre for Medium-Range Weather Forecasts
history: 2020-01-21T09:40:59 GRIB to CDM+CF via cfgrib-0....

这很好。我可以访问不同的时间实例并绘制内容,甚至可以使用 data.t2m.data 访问每个单元格的数据.但是,数据仅由 time 索引和 value ,最后一个是 - 我假设 - 一个单元格编号标识符,但不是读取 latitudelongitude作为有意义的维度。

在文档中,作者使用 airtemp以再分析数据为例,这些数据的索引是 lat , lon , 和 time ,这就是我想要对我的数据集做的事情。
<xarray.Dataset>
Dimensions: (lat: 25, lon: 53, time: 2920)
Coordinates:
* lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0
* lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0
* time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00
Data variables:
air (time, lat, lon) float32 ...
Attributes:
Conventions: COARDS
title: 4x daily NMC reanalysis (1948)
description: Data is from NMC initialized reanalysis\n(4x/day). These a...
platform: Model
references: http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanaly...

xarray 中有一种直接的方法可以进行重新索引。环境?我想我可以简单地提取 numpy数组并跳转到 pandas或者别的什么,但我找到了 xarray库非常强大和有用。

最佳答案

一种方法可能是手动构建一个 pandas.MultiIndex从纬度和经度变量中,将其指定为 values 的坐标。维度,然后拆开数据集:

import pandas as pd

index = pd.MultiIndex.from_arrays(
[ds.longitude.values, ds.latitude.values], names=['lon', 'lat']
)
ds['values'] = index
reshaped = ds.unstack('values')

有关更多信息,请参阅 this section在 xarray 文档的“ reshape 和重组数据”部分下。

关于python - 如何使用新维度 reshape xarray 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59845442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com