重新采样分块 xarray 会创建许多不需要的时间块

问题描述 投票:0回答:1

我正在使用 xarray 读取大型 netCDF 数据集,该数据集每 6 小时采样一次,并希望使用当天的平均值将其下采样到每日。我已经在空间上对数据集进行了分块。对数据集进行下采样后,每个样本时间点现在都有自己的块。

我已经设置了一个最小的工作示例来演示该问题。

Temp = 20 + 10 * np.random.randn(20, 10, 10)   # make some temperature data
times = pd.date_range("2000-01-01", periods = 20)  # daily spaced data
lon = [[i for in range(10)] for _ in range(10)]
dset = xr.Dataset({"Temp": (["time", "x", "y"], Temp)}, 
                  {"lon": (["x", "y"], lon), "lat": (["x", "y"], lon), "time": times})
dset = dset.chunk({"x": 5, "y": 5})   # Frozen({'time': (20,), 'x': (5, 5), 'y': (5, 5)})
re_dset = dset.resample(time = "5D").mean()   # downsample to every 5 days
re_dset.chunks   # Frozen({'time': (1, 1, 1, 1), 'x': (5, 5), 'y': (5, 5)})

重采样数据集的块应该是

Frozen({'time': (1,), 'x': (5, 5), 'y': (5, 5)})

python dask python-xarray downsampling
1个回答
0
投票

我认为只是对显示的块属性存在误解。

您从 20 天开始,时间维度上只有一个切片,x 和 y 各为 5 个切片:

Frozen({'time': (20,), 'x': (5, 5), 'y': (5, 5)})

您以 5 天为单位重新采样,并取平均值,因此您将在时间维度上有 4 个大小为 1 的切片,对应于每 5 天,这就是您观察到的:

Frozen({'time': (1, 1, 1, 1), 'x': (5, 5), 'y': (5, 5)})

我不确定为什么你会期望沿时间维度只有一个大小为 1 的切片?至少应该是 4 号。

© www.soinside.com 2019 - 2024. All rights reserved.