numpy数组的argmax返回非平坦索引
我试图获取Numpy数组中最大元素的索引。 这可以使用numpy.argmax完成。 我的问题是,我想find整个arrays中的最大元素,并获得指数。
numpy.argmax可以应用在一个轴上,这不是我想要的,或者在平面arrays上,这是我想要的。
我的问题是,使用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())
返回最大元素的坐标,但必须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 )。