Я думаю, что проще всего использовать функциональность .quantile()
в xarray. По сути, это всего лишь оболочка для метода .reduce()
, для случая, когда вы уменьшаете массив с помощью функции np.nanpercentile()
.
Например, в вашем случае:
da.quantile([5, 95], dim='time', interpolation='linear')
Где, поскольку вопрос немного расплывчатый, я предположил, что вы берете квантиль за измерение time
. Вы можете поиграть с интерполяцией, но в случае сомнений я использую linear
или lower
.
Что касается второй части вашего вопроса, если вы уверены, что в вашем DataArray нет повторяющихся значений, то вы можете просто использовать метод .where()
, чтобы найти, где данные соответствуют этим процентилям, в противном случае я ' я не уверен, есть ли простой способ сделать это?
Подробнее здесь: http://xarray.pydata.org/en/stable/generated/xarray.DataArray.quantile.html
И немного истории разработки: https://github.com/pydata/xarray/issues/561
Ура! :)