我想找到一个二维 numpy 数组中最大值的下标 [i,j]:
a = numpy.array([[1,2,3],[4,3,1]])
我尝试使用numpy.argsort()来做这件事,但它只能沿着一个轴进行排序并返回一个数组。 一种解决方法是使用for循环比较argsort返回的所有索引(沿两个轴),但这似乎有点复杂。也许有更简单的解决方案?
np.unravel_index
。 np.argmax
将返回一个索引,就像遍历数组的平铺版本一样。 unravel_index
将给出 N-D
索引。a = np.random.randint(0, 10, (4,4))
ind = np.unravel_index(np.argmax(a, axis=None), a.shape) # returns a tuple
max_xy = np.where(a == a.max() )
zip(max_xy[0], max_xy[1]) #=> [(1, 0)]
如果有多个最大值: a = np.array([[4,2,3],[4,3,4]])
,它会返回#=> [(0, 0), (1, 0), (1, 2)]
要返回一个元组的第一个找到的最大值,只需获取数组的第一个元素:
zip(max_xy[0], max_xy[1])[0] #=> (0, 0)
a.argmax(1)
能得到你想要的结果吗? - Jon Clements