我试图找到一个数组的索引,该数组由n个从大到小的最大数组成,在Python中不是100。我已经找到了几种不同的方法来从数组中查找前n个最大值,以及排除等于100的值的方法,但没有一种方法可以保留索引。这就是阵列的外观:
array([ 10, 10, 11, 11, 10, 10, 12, 12, 10, 10, 10, 13, 14,
14, 15, 100, 15, 12, 13, 11, 10, 12, 14, 14, 100, 100,
100, 12, 13, 10, 10, 11, 13, 100, 100, 13, 14, 13, 12,
10, 10, 11, 10, 100, 100, 100, 12, 13, 12, 13, 10, 10,
10, 15, 100, 14, 14, 11, 12, 12, 10, 10, 10, 15, 15,
14, 10, 10, 10, 11, 10, 10, 10, 12, 11, 11, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10])
对于n为10,我希望输出如下: 数组([14,16,63,64,12,13,22,23,55,56])
如果可能的话,我最好寻找一个行程序/一种不使用传统if/elif分拣机的高效方法。让我知道措辞是否混乱,或者这个问题是否已经解决
假设数组a有如下数据。您可以找到前n个最大值的索引,如下所示:
它将打印前10个索引,如下所示:
希望这有帮助
首先,对列表进行排序,但要跟踪原始索引。在下面的解决方案中,我使用元组
然后,在排序列表上向后移动,如果该值不是valueToIgnore,则将该标记附加到res,直到res的长度为n
我们可以使用numpy的argsort方法,该方法根据升序中的值对索引进行排序,并使用where方法将所有100转换为NaN
在这里,nan_100变量将具有数组,其中100被转换为nan。我已经计算了nan的值,因为argsort会将所有nan索引移到末尾
输出:
相关问题 更多 >
编程相关推荐