作业帮 > 数学 > 作业

python里计算每个数字出现的频数

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/22 02:56:06
python里计算每个数字出现的频数
我有一个长array对象(numpy里的),大概是30w个整数(0-9),现在要统计每个数字出现的百分比,请问有没有什么高效的算法?
我现在使用最原始的:
def cal(classfier):
'''
返计算并返回一个长度为8的向量,表示每种颜色的百分比
'''
n0 = 0.0
n1 = 0.0
n2 = 0.0
n3 = 0.0
n4 = 0.0
n5 = 0.0
n6 = 0.0
n7 = 0.0
l = len(classfier)
for i in range(l-1):
if classfier[i] == 0:
\x05n0 = n0 + 1
elif classfier[i] == 1:
\x05n1= n1 + 1
elif classfier[i] == 2:
\x05n2 = n2 + 1
elif classfier[i] == 3:
\x05n3 = n3 + 1
elif classfier[i] == 4:
\x05n4 = n4 + 1
elif classfier[i] == 5:
\x05n5 = n5 + 1
elif classfier[i] == 6:
\x05n6 = n6 + 1
else:
\x05n7 = n7 + 1
vector = [100 * n0/l,100 * n1/l,100 * n2/l,100 * n3/l,100 * n4/l,100 * n5/l,100 * n6/l,100 * n7/l]
print 'Col0:',round(100 * n0/l,4),'%'
print 'Col1:',round(100 * n1/l,4),'%'
print 'Col2:',round(100 * n2/l,4),'%'
print 'Col3:',round(100 * n3/l,4),'%'
print 'Col4:',round(100 * n4/l,4),'%'
print 'Col5:',round(100 * n5/l,4),'%'
print 'Col6:',round(100 * n6/l,4),'%'
print 'Col7:',round(100 * n7/l,4),'%\n'
return(vector)
python 3.3 脚本,看看是否能给你点启示
a = [1,2,5,1,2,3,5,6,6,5,4,6,4,2,0,8,9,7,4,1,1,2,2,2,2,2,2,2,2,3,3,3,2,5,2,5,8,5,5]
count = len(a)
myset = set(a)
for item in myset:
print(item,100*a.count(item)/count)