我有一个二维的NumPy ndarray数组。
array([[ 0., 20., -2.],
[ 2., 1., 0.],
[ 4., 3., 20.]])
如何获取所有最大元素的索引?因此,我希望输出为array([0,1],[2,2])。
使用 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)