python - 在numpy数组的特定行中,如何查找前3个最大值的列索引
问题描述
我有一个数组 X:
X = np.array([[4, 3, 5, 2],
[9, 6, 7, 3],
[8, 6, 7, 5],
[3, 4, 5, 3],
[5, 3, 2, 6]])
我想要索引为 1 的前 3 个最大值的索引。结果将是:
[0,2,1]
我对 Python 比较陌生。我尝试使用 argsort 执行此操作,但无法针对某一特定行执行此操作。
解决方案
您可以使用argsort
on axis=1
(按行),然后提取每行的最后 3 个索引:
X.argsort(axis=1)[:,:-4:-1]
#[[2 0 1]
# [0 2 1]
# [0 2 1]
# [2 1 3]
# [3 0 1]]
推荐阅读
- java - 在编写我的第一个 GUI 时出现 Null 指针异常,我不知道哪里出了问题
- python - django left join + group by count(*),包括零计数
- c# - 在使用构造之前声明一次性对象的好处
- drop-down-menu - PWA 上的 Ionic 4 弹出框和/或操作表?
- c - 尝试在 c 中打印附加的数组元素时出现问题
- java - Java 8 - 匿名类和 lambda 函数之间的明显不一致
- c# - 如何在 App.Config 中设置相对路径?
- javascript - 如何在 html 5 中的画布上设置其他站点?
- java - 我如何将一个变量传递给一个类,然后用不同的值返回到它定义的类?
- google-colaboratory - from keras_contrib.layers import InstanceNormalization ModuleNotFoundError: No module named 'keras_contrib