numpy数组如何返回非平坦索引的Argmax?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (95)

我正在尝试获取Numpy数组中最大元素的索引。这可以使用numpy.argmax。我的问题是,我想在整个数组中找到最大的元素,并得到它的索引。

numpy.argmax可以沿着一个轴应用,这不是我想要的,也可以应用在扁平的数组上,这是我想要的。

我的问题是numpy.argmax带着axis=None当我想要多维索引时,返回平面索引。

我可以用divmod得到一个非平坦的指数,但这感觉很难看。有什么更好的方法吗?

提问于
用户回答回答于

你可以用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
用户回答回答于
np.where(a==a.max())

返回最大元素的坐标,但必须对数组进行两次解析。

>>> a = np.array(((3,4,5),(0,1,2)))
>>> np.where(a==a.max())
(array([0]), array([2]))

这个,和argmax,返回等于最大值的所有元素的坐标。argmax只返回其中一个(np.ones(5).argmax()返回0).

扫码关注云+社区