如何在ndarray中找到所有的argmax

3
我有一个二维的NumPy ndarray数组。
array([[  0.,  20.,  -2.],
   [  2.,   1.,   0.],
   [  4.,   3.,  20.]])

如何获取所有最大元素的索引?因此,我希望输出为array([0,1],[2,2])。

1个回答

3

使用 np.argwhere 函数对 最大相等掩码 进行操作 -

np.argwhere(a == a.max())

示例运行 -


In [552]: a   # Input array
Out[552]: 
array([[  0.,  20.,  -2.],
       [  2.,   1.,   0.],
       [  4.,   3.,  20.]])

In [553]: a == a.max() # Max equality mask
Out[553]: 
array([[False,  True, False],
       [False, False, False],
       [False, False,  True]], dtype=bool)

In [554]: np.argwhere(a == a.max()) # array of row, col indices of max-mask
Out[554]: 
array([[0, 1],
       [2, 2]])

如果你正在处理浮点数,你可能需要使用一些容差。因此,在考虑到这一点的情况下,你可以使用 np.isclose,它具有一些默认的绝对和相对容差值。这将替换先前的 a == a.max() 部分,像这样 -
In [555]: np.isclose(a, a.max())
Out[555]: 
array([[False,  True, False],
       [False, False, False],
       [False, False,  True]], dtype=bool)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接