Как найти 10 лучших значений в наборе данных xarray с координатами? - PullRequest
0 голосов
/ 18 февраля 2020

Я использовал этот синтаксис, который помог найти максимальный набор данных и координаты, в которых они находятся: da.where (da == da.max (), drop = True) .squeeze ()

есть ли способ, подобный этому, чтобы найти 10 лучших значений / 90-й процентиль набора данных и с какими координатами они находятся?

спасибо

1 Ответ

1 голос
/ 21 февраля 2020

Я думаю, что проще всего использовать функциональность .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

Ура! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...