繁体   English   中英

如何在列表中找到最频繁的

[英]how to find the most frequent in list

我是 python 的新手,我需要找到列表pdInput中出现频率最高的元素以及mostFreqenNum列表中有多少相同的元素

    mostFreqenNum = []
    contMostnum = [0]
    
    ContTraining = int(input('How many time You like to Train you input: '))
        for i in range(ContTraining):
            pdInput = int(
                input('Please input your number whatever you want: '))
            mostFreqenNum.append(pdInput)
            for x in mostFreqenNum:
                coutFreqenNum = contMostnum.count(x)

给定一个值列表inp ,您可以找到最常见的值,如下所示:

  1. 使用collections.Counter

    from collections import Counter

    most_common = Counter(inp).most_common(1)

output 是一个内部有(value, count)tuple

  1. 使用sorted

    sorted(inp, key=lambda x: inp.count(x), reverse=True)[0]

output 是列表中最常见的值

  1. using numpy : # note only works with numeric values

    np.argmax(np.bincount(inp))

output 是列表中最常见的值

  1. 另一个使用builtins

    max(set(inp), key=inp.count)

output 是列表中最常见的值

  1. 另一个使用pandas

    import pandas as pd

    pd.value_counts(inp).index[0]

output 是列表中最常见的值

为什么你不使用 python 的内置模块,统计。 您可以像这样使用模块:

import statistics
### your input code
mode = statistics.mode(mostFreqenNum)
print(mode)

mode() 接收参数列表类型。 然后你可以使用count()。 另一个例子,可能是这样的:

>>> import statistics
>>> lists = [2,3,2,2,3,4,5]
>>> mode = statistics.mode(lists)
>>> print(mode)
2
>>> lists.count(2)
3
>>>

我不确定你到底想做什么,但也许这可以工作:

mostFreqenNum = {}
contMostnum = 0
myList = [1, 2, 3, 2, 4, 3, 2, 3, 5, 3]

for i in myList:
    if i in mostFreqenNum:
        mostFreqenNum[i] += 1
    else:
        mostFreqenNum[i] = 1
        
for x in mostFreqenNum:
    if mostFreqenNum[x] > contMostnum:
        contMostnum = mostFreqenNum[x]
        mostFreqKey = x
    else:
        continue

print(f'Most frequent key, {mostFreqKey}, seen {contMostnum} times.')
def Prediction_Model_v3():
alnv3 = [[],[]]
inpv3 = int(input('How many time You like to Train you input V3: '))
for i in range(inpv3):
    pdInpv3 = int(
        input('V3 input number whatever you want: '))
    alnv3[0].append(pdInpv3)
    mdv3 = statistics.mode(alnv3[0])
    if(pdInpv3 == mdv3):
        alnv3[1].append(str(len(alnv3[1])))
    print('numberInput V3: ', alnv3[0])
print('Most Frequent number V3 is ', str(mdv3), ':', str(len(alnv3[1])))
pdtISv3 = (((inpv3-int(len(alnv3[1])))*100)/inpv3)
print('Result of prediction V3 is: ', str(
    mdv3), '=', str(pdtISv3), '%')
alnv3.clear()
return str(pdtISv3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM