首页 > 解决方案 > Python在数组中找到最常见的值

问题描述

import numpy as np 
x = ([1,2,3,3])
y = ([1,2,3])
z = ([6,6,1,2,9,9])

(只有正值)在每个数组中,我需要返回最常见的值,或者,如果值出现相同的次数 - 返回最小值。这是家庭作业,我只能使用 numpy。

输出:

f(x) = 3,
f(y) = 1,
f(z) = 6

标签: pythonnumpy

解决方案


对于一个 numpy 的独家解决方案,这样的事情会起作用:

occurances = np.bincount(x)
print (np.argmax(occurances))

如果列表中有负数,上述方法将不起作用。因此,为了解决这种情况,请使用:

not_required, counts = np.unique(x, return_counts=True)
x=np.array(x)
if (x >= 0).all():
    print(not_required[np.argmax(counts)])
else:    
    print(not_required[np.argmax(counts)])

推荐阅读