我正在尝试获取Numpy数组中最大元素的索引。可以使用来完成numpy.argmax
。我的问题是,我想在整个数组中找到最大的元素并获取其索引。
numpy.argmax
既可以沿一个轴(不是我想要的)应用,也可以沿扁平数组(这是我想要的一种)应用。
我的问题是,当我想要多维索引时,使用numpy.argmax
withaxis=None
返回平面索引。
我可以divmod
用来获取非固定索引,但这很难看。有什么更好的方法吗?
我正在尝试获取Numpy数组中最大元素的索引。可以使用来完成numpy.argmax
。我的问题是,我想在整个数组中找到最大的元素并获取其索引。
numpy.argmax
既可以沿一个轴(不是我想要的)应用,也可以沿扁平数组(这是我想要的一种)应用。
我的问题是,当我想要多维索引时,使用numpy.argmax
withaxis=None
返回平面索引。
我可以divmod
用来获取非固定索引,但这很难看。有什么更好的方法吗?
Answers:
您可以使用numpy.unravel_index()
以下结果numpy.argmax()
:
>>> a = numpy.random.random((10, 10))
>>> numpy.unravel_index(a.argmax(), a.shape)
(6, 7)
>>> a[6, 7] == a.max()
True
要获取所有出现的最大值的非平坦索引,可以使用代替来稍微修改eumiro的答案:argwhere
where
np.argwhere(a==a.max())
>>> a = np.array([[1,2,4],[4,3,4]])
>>> np.argwhere(a==a.max())
array([[0, 2],
[1, 0],
[1, 2]])
==
,第三次True
从该结果中提取值。请注意,可能有多个项目等于最大项目。