我有一个数组 [2, 4, 2, 1, 3, 2, 2] 我想按降序获取前 3 个值索引。所以我的输出应该是 [1,4,0],它们是数组中前 3 个元素的索引,按降序排列。 (可以容忍类似的项目索引)。我正在使用部分完成我的工作的瓶颈。
import bottleneck
import numpy as np
a = np.array([2, 4, 2, 1, 3, 2, 2])
b = np.array(bottleneck.argpartsort(-a, 3)[:3])
print(b)
给出 [4 1 5] 是数组的正确前 3(n) 个索引,但不是按降序排列。是否有任何内置函数来调整此输出以提供降序
请您参考如下方法:
你可以使用np.argsort
import numpy as np
a = np.array([2, 4, 2, 1, 3, 2, 2])
b = np.argsort(a)[-3:]
b = b[::-1]
注意:最后两行可以进一步简化为(虽然没有太大的计算优势)
b = np.argsort(a)[-3:][::-1]
# or, as juanpa suggested
b = np.argsort(a)[-1:-4:-1]
都给出b的以下值
array([1, 4, 6])
