因此,假设我有以下内容:
1,5,1,6,3,3,4,5,5,5,2,5
计数: 1-3 2-1 3-2 4-1 5-5 6-1
现在,我想打印一个在x轴上排序的直方图,如下所示:
非:1 2 3 4 5 6
但按总数排序:2 4 6 3 1 5。
请帮帮我!谢谢..。
我当前的绘图代码是:
plt.clf()
plt.cla()
plt.xlim(0,1)
plt.axvline(x=.85, color='r',linewidth=0.1)
plt.hist(correlation,2000,(0.0,1.0))
plt.xlabel(index[thecolumn]+' histogram')
plt.ylabel('X Data')
savefig(histogramsave,format='pdf')发布于 2013-03-28 06:52:53
使用collections.Counter,使用sorted对项进行排序,传入一个自定义键函数:
>>> from collections import Counter
>>> values = [1,5,1,1,6,3,3,4,5,5,5,2,5]
>>> counts = Counter(values)
>>> for k, count in reversed(counts.most_common()):
>>> print(k, count * 'x')
2 x
4 x
6 x
3 xx
1 xxx
5 xxxxx发布于 2013-03-28 06:55:27
史蒂文的想法是正确的。集合库可以完成您的任务。
如果你想手工完成这项工作,你可以构建如下代码:
data = [1,5,1,1,6,3,3,4,5,5,5,2,5]
counts = {}
for x in data:
if x not in counts.keys():
counts[x]=0
counts[x]+=1
tupleList = []
for k,v in counts.items():
tupleList.append((k,v))
for x in sorted(tupleList, key=lambda tup: tup[1]):
print "%s" % x[0],
print发布于 2013-03-28 06:56:58
您必须对其进行计数和排序,如下例所示:
>>> from collections import defaultdict
>>> l = [1,5,1,1,6,3,3,4,5,5,5,2,5]
>>> d = defaultdict(int)
>>> for e in l:
... d[e] += 1
...
>>> print sorted(d,key=lambda e:d[e])
[2, 4, 6, 3, 1, 5]https://stackoverflow.com/questions/15670957
复制相似问题