确定数组中 N 个非零最小值的索引

Posted

技术标签:

【中文标题】确定数组中 N 个非零最小值的索引【英文标题】:Determine indices of N number of non-zero minimum values in array 【发布时间】:2021-07-11 20:19:48 【问题描述】:

我有一个 x 大小的数组,需要确定 n 个最小值的索引。我发现这个链接 (I have need the N minimum (index) values in a numpy array) 讨论了如何获取多个最小值,但是当我的数组中有零时它就不能正常工作了。

例如:

x = [10, 12, 11, 9, 0, 1, 15, 4, 10]
n = 3

我需要找到 3 个最低的非零值的索引,所以结果是

non_zero_min_ind = [5, 7, 3]

它们不需要按任何顺序排列。我正在尝试在 python 3 中执行此操作。任何帮助将不胜感激。

【问题讨论】:

为什么一定要用numpy? 【参考方案1】:

使用 numpy:

import numpy as np
y = np.argsort(x)
y[np.array(x)[y]!=0][:n]

array([5, 7, 3])

【讨论】:

如果有多个0怎么办?

以上是关于确定数组中 N 个非零最小值的索引的主要内容,如果未能解决你的问题,请参考以下文章

数组中最小值的索引; “递归”

在索引 0 为 0 的数组中查找非零最小值 C++

Python | 快速获取某一列数组中前 N 个最大值/最小值的索引 | 三种方法总结

Python | 快速获取某一列数组中前 N 个最大值/最小值的索引 | 三种方法总结

在Python中查找给定数组中最小值的索引

在javascript中的数组中查找多个最小值的索引