当python xarray模块中每个像素的范围不同时,是否可以按时间范围选择数据集

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

我尝试只选择特定时间范围内的这部分数据,每个像素都不同。

对于索引,我有两个 np.datetime64[ns] xr.DataArrays,其形状(lat:152,lon:131)名为 time_range_min,time_range_max 一个保存开始日期,另一个保存结束日期。

我尝试用这个来选择数据

dataset = data.sel(time=slice(time_range_min, time_range_max))

但是它产生了

不能在切片中使用非标量数组进行 xarray 索引:

如果我不能使用非标量数组,则意味着通常不可能做到这一点,或者我可以转换我的数组吗?

python indexing multi-index python-xarray
2个回答
3
投票

如果“时间”是

str
ing 中从过去到现在排序的日期列表(例如 ["10-20-2021", "10-21-2021", ...]:

import numpy as np
listOfMinMaxTimeRanges = [time_range_min, time_range_max]
specifiedRangeOfTimeIndexedList = []
for indexingListOfMinMaxTimeRanges in range(len(listOfMinMaxTimeRanges)):
    specifiedRangeOfTimeIndexed = [specifiedRangeOfTime for specifiedRangeOfTime in np.arange(0, len(time), 1) if time.index(listOfMinMaxTimeRanges[0][indexingListOfMinMaxTimeRanges]) <= specifiedRangeOfTime <= time.index(listOfMinMaxTimeRanges[1][indexingListOfMinMaxTimeRanges])]
    for indexes in specifiedRangeOfTimeIndexed:
        specifiedRangeOfTimeIndexedList.append(indexes)

取决于您的数据集的结构:

dataset = data.sel(time = specifiedRangeOfTimeIndexedList)

dataset = data.sel(time = time[specifiedRangeOfTimeIndexedList])

dataset = dataset[time[specifiedRangeOfTimeIndexedList]]

dataset = dataset[:, time[specifiedRangeOfTimeIndexedList]]

dataset = dataset[time[specifiedRangeOfTimeIndexedList], :, :]

dataset = dataset[specifiedRangeOfTimeIndexedList]

...


0
投票

我找到了一种在 xarray 中使用 stacking 对每个单元格进行分组的方法: time_range_min 和 time_range_max 现在标记为单个日期

stack = dataset.value.stack(gridcell=['lat', 'lon'])
for unique_value, grouped_array in stack.groupby('gridcell'):
    grouped_array.sel(time=slice(time_range_min,time_range_max))
    
© www.soinside.com 2019 - 2024. All rights reserved.