Есть ли 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]]