我知道如何找到 n 维数组的最大元素的索引。
让我们举个例子:
a=np.asarray([[1,7,-4],[9,-11,-17]])
然后 ( source ):
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]])
我想得到一个输出,告诉我数组 a
中第 i 个最大元素的索引,例如,如果 i=3
,输出应该是 [0,0]
,因为 a[0,0]=1
是 a
的第 i 个(第三)大元素。
我该怎么做?
最佳答案
好吧,要获得一些最大或任何一个的索引,您可以使用 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]
我的意思是您可以自行更改您希望这些索引的样子(元组或其他)。
关于python - 如何找到 n 维 numpy 数组的第 i 个最大元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54046591/