Есть ли masked_max как masked_less в numpy?

Что эквивалентно

masked_arr = np.ma.masked_max(arr, axis=(-1,-2))

получить

[[[False  True]
  [False False]]]

# or an equivalent with -- and max value in place

от

[[[ 0.5488135   0.71518937]
  [ 0.60276338  0.54488318]]]

Я старался

np.ma.max(arr, axis=(-1,-2))

но он возвращает только значение типа np.max, а не маску. Как мне это сделать?

2 ответа

Решение

Я не думаю, что вам даже нужно использовать np.ma для этого вы можете просто сделать

mask = np.isclose(x, x.max((-1, -2), keepdims = True))

не забудьте использовать np.isclose и не == для поплавков. Тем не мение,

mask = x == x.max((-1, -2), keepdims = True)

работает, если у вас есть целые числа или другой тип, где == безопасно.

Как numpy.ma.masked_less, E сть numpy.ma.masked_greater,

Но ты хочешь numpy.ma.masked_greater_equal

import numpy
x = numpy.array([
    [0.54881350, 0.71518937],
    [0.60276338, 0.54488318]
])

mask = numpy.ma.masked_greater_equal(x, x.max()).mask
print(mask)

и я получаю:

[[False  True]
 [False False]]
Другие вопросы по тегам