numpy数组的argmax返回非平坦索引

我试图获取Numpy数组中最大元素的索引。 这可以使用numpy.argmax完成。 我的问题是,我想find整个arrays中的最大元素,并获得指数。

numpy.argmax可以应用在一个轴上,这不是我想要的,或者在平面arrays上,这是我想要的。

我的问题是,使用numpy.argmaxaxis=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()) 

返回最大元素的坐标,但必须parsing数组两次。

 >>> 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 )。