4

だから私は次のものを持っているとしましょう:

[1,5,1,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')
4

3 に答える 3

2

を使用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-27T22:52:53.343 に答える
1

スティーブンは正しい考えを持っています。コレクション ライブラリはあなたの持ち上げを行うことができます。

それ以外の場合は、手動で作業を行いたい場合は、次のようなものを構築できます。

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-27T22:55:26.947 に答える
0

以下の例のように、数えて並べ替える必要があります。

>>> 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]
于 2013-03-27T22:56:58.250 に答える