繁体   English   中英

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

[英]find indices of maximum value in matrix (python)

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

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

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

您需要np.unravel_index np.argmax将返回一个索引,就好像遍历了数组的展平版本一样。 unravel_index将为您提供ND索引。

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM