1

リスト内の値の頻度を見つけることに関して、いくつかの質問を見つけました。リスト内のリストの頻度を見つけることに関しては何も見つかりませんでしたが。(または ndarray 内の ndarray)

本質的に、次の一意の行を見つけたい:

ndarray: [[ 3.95428571 5.67428571]

 [ 3.795       4.67166667]
 [ 5.05        6.79      ]
 [ 4.54333333  6.16666667]
 [ 4.7175      6.31      ]
 [ 4.81        6.41      ]
 [ 3.82166667  5.34666667]
 [ 4.16        6.315     ]
 [ 3.915       4.855     ]
 [ 4.44        6.57      ]
 [ 5.1         6.78      ]
 [ 4.03        6.655     ]
 [ 3.71        6.22      ]
 [ 4.57142857  5.51      ]
 [ 3.67        5.45      ]
 [ 4.048       5.484     ]
 [ 4.24714286  5.31142857]
 [ 4.125       6.175     ]
 [ 4.72        4.18      ]
 [ 4.02125     5.82625   ]
 [ 3.729       5.688     ]
 [ 4.17666667  5.80666667]
 [ 4.08        6.102     ]
 [ 5.05        7.1       ]
 [ 4.22        4.968     ]
 [ 3.6625      5.9625    ]
 [ 4.444       5.832     ]
 [ 4.395       7.09      ]
 [ 4.39        5.        ]
 [ 4.745       5.995     ]
 [ 4.81        7.25      ]
 [ 3.74285714  6.22571429]
 [ 5.52        4.38      ]
 [ 3.92        4.1       ]
 [ 3.525       5.91833333]
 [ 3.85666667  6.09333333]
 [ 3.42        5.87...

およびそれらの対応する頻度。(二次元ヒストグラムをプロットしたい)

アイデア/ヒント/解決策はありますか?

4

3 に答える 3

1

一般に、データがハッシュ可能である限り、 を使用defaultdictしてすべての発生をカウントできます。はハッシュ可能ではないためlist、 に変換しましたtupledataしたがって、データが変数(リストのリスト)にあると仮定すると、これは機能し、単純なヒストグラムを出力するはずです:

from collections import defaultdict
counts = defaultdict(int)
for x in data:
    counts[tuple(x)] += 1
for val, cnt in sorted(counts.iteritems(), key=lambda x: x[1]):
    print '%3d: %s' % (cnt, val)
于 2013-07-19T09:44:20.483 に答える