计算python字典的百分比
我想计算字典中出现值的百分比计算python字典的百分比,python,python-2.7,numpy,Python,Python 2.7,Numpy,我想计算字典中出现值的百分比d.values/sum(d.values)*100给出错误:不支持的操作数类型/:“list”和“int”不能将整个列表除以任何整数。我想,我试着用d=(计数器([Counter(I)[1']代表f.readlines()中的I))在计算时,你可以计算出百分比,但它不起作用。如果有人有主意,请告诉我 from collections import Counter import numpy as np import matplotlib.pyplot as plt i
d.values/sum(d.values)*100给出错误:不支持的操作数类型/:“list”和“int”
不能将整个列表除以任何整数。我想,我试着用d=(计数器([Counter(I)[1']代表f.readlines()中的I))
在计算时,你可以计算出百分比,但它不起作用。如果有人有主意,请告诉我
from collections import Counter
import numpy as np
import matplotlib.pyplot as plt
import pylab as pl
with open("data_binary.txt") as f:
d=(Counter([Counter(i)['1'] for i in f.readlines()]))
print d
p = d.values()
X = np.arange(len(d))
pl.bar(X, p, align='center',width=0.25)
a = np.array(d.items())
pl.xticks(X,d.keys())
a = a[np.argsort(a[:,0])]
#print a
ymax=max(d.values())+1
pl.ylim(0, 70000)
plt.xlabel ("Number of ones")
plt.ylabel ("Number of Signatures")
plt.title("Adder@1")
pl.show()
您可能希望使用len(d.values())来获取项目数,除非我遗漏了什么。你能分享一下字典(d)的样子吗?(即打印d的输出?您可以使用列表组件
In[2]: my_dict = {key: key for key in range(5)}
In[3]: values = my_dict.values()
In[4]: values
Out[4]: [0, 1, 2, 3, 4]
In[5]: total = sum(values)
In[6]: new = [value * 100. / total for value in values]
In[7]: new
Out[7]: [0.0, 10.0, 20.0, 30.0, 40.0]
也可以使用np.array
In[8]: import numpy as np
In[9]: x = np.array([1, 2, 3, 4])
In[10]: x
Out[10]: array([1, 2, 3, 4])
In[11]: x/3.4
Out[11]: array([ 0.29411765, 0.58823529, 0.88235294, 1.17647059])
使用numpy
x = np.array(d.values())
print x*100.0/sum(x)
对于任何值为整数的字典d,可按如下方式计算和打印每个项目代表的总百分比:
s = sum(d.values())
for k, v in d.items():
pct = v * 100.0 / s
print(k, pct)
numpy在这方面做得太过分了,它针对数组而不是字典进行了优化。你能举个例子吗。,。字典是什么样子的?为什么不直接使用np.fromfile
(如果是二进制的)或np.loadtxt将数据加载到np.array
?