import numpy as np
from scipy import stats
data=np.array([23,28,34,17,69,28,28,80,36,97,58,58,58])
方法一:
counts=np.bincount(data)
np.argmax(counts)
方法二:
stats.mode(data)[0][0] #使用stats函数中的mode方法可以获取众数
这两种方法都只能求出28为众数,实际上58也是众数,这个要怎么才能获取出来呢?
import numpy as np
from scipy import stats
data=np.array([23,28,34,17,69,28,28,80,36,97,58,58,58])
方法一:
counts=np.bincount(data)
np.argmax(counts)
方法二:
stats.mode(data)[0][0] #使用stats函数中的mode方法可以获取众数
这两种方法都只能求出28为众数,实际上58也是众数,这个要怎么才能获取出来呢?
(argmax只能返回第一个最大值)继续循环迭代下去.
first = np.argmax(counts)
maxCount = counts.count(counts[first]) # 先数一下最大值有几个,大于1个就迭代
def findC(i, li):
if maxCount > 1:
nextMax = np.argmax(counts[first + 1: ])
print(first, nextMax)
findC(nextMax, counts)
else:
return
findC(first, maxCount)