Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算python字典的百分比_Python_Python 2.7_Numpy - Fatal编程技术网

计算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