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