我有一个长array对象(numpy里的),大概是30w个整数(0-9),现在要统计每个数字出现的百分比,请问有没有什么高效的算法?我现在使用最原始的:defcal(classfier):'''返计算并返回一...
我有一个长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:
n0 = n0 + 1
elif classfier[i] == 1:
n1= n1 + 1
elif classfier[i] == 2:
n2 = n2 + 1
elif classfier[i] == 3:
n3 = n3 + 1
elif classfier[i] == 4:
n4 = n4 + 1
elif classfier[i] == 5:
n5 = n5 + 1
elif classfier[i] == 6:
n6 = n6 + 1
else:
n7 = 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)
展开