Получите фрагмент набора данных, используя индексы списка - PullRequest
0 голосов
/ 05 мая 2020

Я хотел бы понять, как я могу получить часть набора данных с помощью индексов списка.

Обычно, когда я хочу получить часть набора данных, я делаю это при импорте данных. Например, если мне нужны все данные, кроме тех, где широта превышает 60 ° с.ш., я напишу:

with Dataset(filename) as DS:
    latitude   = DS.variables['latitude'][:] # [:] means all
    y1 = 0; y2 = np.where(latitude>60)[0][0] # I add [0][0] because I want the first element where latitude is greater than 60°N
    myvariable = DS.variables['varname'][y1:y2,:] # Load variable with only a portion of the latitudes and all the longitudes

Но теперь я хочу использовать код от кого-то другого , и они использовать индексы списка, чтобы получить часть набора данных. Например:

def grid(self, varname, indexs=None):
    if indexs is None:
           indexs = dict()
    with Dataset(self.filename) as h:
           dims = h.variables[varname].dimensions
           sl = [indexs.get(dim, self.indexs.get(dim, slice(None) if dim in coordinates_dims else 0)) for dim in dims]
           self.vars[varname] = h.variables[varname][sl]

Здесь я не знаю, что я должен передать в качестве индексов функции сетки. Я пытался сделать:

lat_list = latitude.tolist()
lat_list.index(60)

Но проблема в том, что у меня нет идеального 60 ° N в моем массиве широт, и я подозреваю, что я захочу найти все индексы ниже 60 ° N.

Буду приветствовать любые полезные комментарии. Заранее спасибо :)

...