在 numpy 中是否有像 masked_less 这样的 masked_max?

Is there a masked_max like masked_less in 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))

但它 returns 只是一个类似于 np.max 的值,而不是掩码。我该怎么做?

就像numpy.ma.masked_less一样,还有一个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]]

我认为你甚至不需要为此使用 np.ma,你可以这样做

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

请记住使用 np.isclose 而不是 == 作为浮点数。然而,

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

如果您有整数或其他 == 是安全的类型,则可以使用。