在矩阵中找到最大值的索引(python)

时间:2018-11-25 18:46:57

标签: python arrays matrix max

我想在二维numpy数组中找到最大值的索引[i,j]:

a = numpy.array([[1,2,3],[4,3,1]])

我尝试使用numpy.argsort()进行此操作,但它返回一个数组,因为它只能沿轴进行。 一种解决方案是通过使用for循环比较argsort返回的所有索引(沿两个轴)上的元素,但这似乎有点复杂。也许有一个简单的解决方案?

2 个答案:

答案 0 :(得分:3)

您想要np.unravel_indexnp.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

答案 1 :(得分:1)

也许这可以返回您想要的东西?它返回最大值(

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)