检查特定值是否在numpy数组中多次出现

2024-06-13 18:58:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一个简单的KNN算法,其中我想添加一个if语句来解析tie(如果在一个测试点周围有来自几个不同类的相等数量的邻居)。当我想知道一个数组的最大值是否多次出现时,问题就出现了,但我似乎找不到一个函数来执行此操作。我想要的:

unique, counts = np.unique(k_nearest_labels, return_counts=True)

if (len(unique)>1) and (frequency of max(counts) in counts > 1)
    return the nearest of the tied points

其中countsunique中数字的频率。如何解决if状态中的第二个条件?或者我忽略了另一种解决方案。在


Tags: ofthe函数算法数量returnif数组
2条回答

实际上,您可以跳过np.unique(这在计算上相当昂贵),仍然可以得到您想要的:

maxcount = (k_nearest_labels == k_nearest_labels.max()).sum()
if k_nearest_labels.size > maxcount and maxcount > 1:
    ...do stuff...

还有:耶!你在写的时候回答了你自己的问题。那总是很有趣。你绝对应该接受海默森的建议,把你的编辑和答案分割成一个合适的答案(这会让其他人更容易找到答案)。在

我解决了它,忘了我可以创建一个布尔数组,然后求和,这是我的解决方案,给那些偶然发现它的人。在

 if (len(unique)>1) and (frequency of max(counts) in counts > 1)

可以写成:

^{pr2}$

相关问题 更多 >