В настоящее время я работаю с некоторыми данными о погоде, которые у меня есть в виде файлов netcdf, которые я могу легко прочитать с помощью библиотеки pythons xarray
Теперь я хотел бы получить n наименьших значений моего массива данных, который имеет 3 измерения (долгота, широта и время)
Когда у меня есть DataArray dr, я могу просто сделать dr.min()
, возможно, указать ось, а затем получить минимум, но когда я хочу получить также второе наименьшее или даже переменное количество наименьших значений, кажется, что это не так так просто
То, что я сейчас делаю, это:
with xr.open_dataset(path) as ds:
dr = ds[selection]
dr = dr.values.reshape(dr.values.size)
dr.sort()
n_smallest = dr[0:n]
, что кажется мне немного сложным по сравнению с простым .min()
Я должен набрать для наименьшего значения
Я на самом деле хочу получить время для соответствующих наименьших значений, которые я делаю для наименьших с:
dr.where(dr[selection] == dr[selection].min(), drop=True)[time].values
так есть ли лучший способ получить n наименьших значений? или, может быть, даже простой способ получить времена для n наименьших значений?
может быть, есть способ уменьшить массив 3D-данных вдоль оси долготы и широты до соответствующих наименьших значений?