首页 > 解决方案 > 如何找到 n 维 numpy 数组的第 i 个最大元素的索引?

问题描述

我知道如何找到 n 维数组的最大元素的索引。

让我们举个例子:

a=np.asarray([[1,7,-4],[9,-11,-17]])

然后(来源):

from numpy import unravel_index
unravel_index(a.argmax(), a.shape)

返回:

(1, 0)

确实a[1,0]9,这是数组中的最高元素a,所以我们很好。


我还能够弄清楚如何找到一维 numpy 数组(using)的第 i 个最大元素的索引:

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

i=3 # we want the third largest element, for example
a.argsort()[-i]

这返回1,这很好,因为a[1]=3这确实是 的第三大元素a


我想把这两个结合起来。所以如果我有

a=np.asarray([[1,7,-4],[9,-11,-17]])

我想得到一个输出,告诉我数组的第 i 个最大元素的索引a,例如,如果i=3,输出应该是[0,0],因为a[0,0]=1是 的第 i 个(第三个)最大元素a

我怎样才能做到这一点?

标签: pythonarrayspython-3.xnumpymax

解决方案


好吧,要获得一些最大或任何一个的索引,您可以使用 where:

通过webDev添加到上述答案:

import numpy as np
i=2

a=np.asarray([[1,7,-4],[9,-11,-17]])

flat=a.flatten()
flat.sort()
tryvalue= flat[-i]

i, j = np.where(a == tryvalue)
print(i,j)

这会给你:

[0] [1]

我的意思是您可以自己更改您希望这些索引的样子(元组或其他)。


推荐阅读