Я хотел бы использовать np.percentile
, чтобы получить разные квантили для каждой строки.
Например, учитывая этот массив из двух строк, я хотел бы получить 20-й процентиль для первой строкии 60-й процентиль для второго.
dat = np.array([[1, 10, 3], [4, -1, 5]])
dat
# array([[ 1, 10, 3],
# [ 4, -1, 5]])
Начиная с 20-го процентиля:
np.percentile(dat, 0.2, axis=1)
# array([ 1.008, -0.98 ])
И 60-го:
np.percentile(dat, 0.6, axis=1)
# array([ 1.024, -0.94 ])
Исходя из этого,идеальный результат был бы [1.008, -0.94]
.
Передача вектора по мере того, как квантиль расширяет результат в массив n
x n
:
np.percentile(dat, [0.2, 0.6], axis=1)
# array([[ 1.008, -0.98 ],
# [ 1.024, -0.94 ]])
Диагональ этого результата даетправильный результат:
np.percentile(dat, [0.2, 0.6], axis=1).diagonal()
# array([ 1.008, -0.94 ])
Но это слишком дорого для больших массивов.Есть ли способ напрямую рассчитать процентили с соответствующим квантилем для каждой строки?