龙空技术网

Python统计学-004:描述统计-众数

数据艺术家 283

前言:

眼前你们对“计算机算法众数问题源码怎么求”大约比较注意,各位老铁们都想要知道一些“计算机算法众数问题源码怎么求”的相关知识。那么小编同时在网络上汇集了一些对于“计算机算法众数问题源码怎么求””的相关内容,希望小伙伴们能喜欢,姐妹们快快来学习一下吧!

众数:一组数据中出现次数最多的数值,一组数据可以不存在、存在一个或多个众数,众数用M表示。当所有数据出现次数都相同时,众数不存在。

实现思路

因为无法直接获知一个数组当中出现频率最高的数值,所以我们需要先统计数组中每一个数值的出现次数,而后再找出所有出现次数最高的数值。其中:

记录每个数值的出现次数,可以使用哈希表存储,变量值的值作为key,变量值出现的频数作为value。若发现变量值列表中所有数值均只出现了一次,则返回空数组(众数不存在)。实现代码

有效定义域:实数集

def descriptive_mode(list): # [第1步] 获取 变量值列表 中 所有不重复的变量值 list_set=set(list); # [第2步] 获取 所有不重复的变量值 在 变量值列表 中的 出现频数  frequency_dict={}; for i in list_set: frequency_dict[i]=list.count(i) # [第3步] 获取 变量值列表 中 出现频数 最高的数值的 出现频数 max_frequency=max(frequency_dict.values()) mode_list=[] if max_frequency==1: # 若最高的 出现频数 为1,则没有众数 return mode_list; # [第4步] 找出 所有不重复的变量值 中 出现频数 最高的变量值 for key,value in frequency_dict.items(): if value==max_frequency: mode_list.append(key)	return mode_list

测试:

mode=descriptive_mode([3,1,2,1.5,1.5,1.5]);print(mode)

结果:

1.5

代码解释

list_set=set(list) #将List转化为集合(可以去除重复元素)

for i in list_set #遍历list_set中的每一个元素

hashmap[key]=value #在hashmap中添加一个键值对,其中键为key,值为value

list.append(num) #将num添加到数组list

作者:长行

(了解更多:Markdown格式源代码)

标签: #计算机算法众数问题源码怎么求