7

次のような2 つのリストvaluefreqにデータがあります。

値周波数
1 2
2 1
3 3
6 2
7 3
8 3
....

出力を

ビン周波数
1-3 6
4-6 2
7-9 6
...

これを行うには、数行のコードを書くことができます。ただし、標準のpythonまたはNumpyに組み込み関数があるかどうかを調べていますか? 繰り返しのある配列/リストのデータが与えられたときに解決策を見つけました。つまり、それらはまだ頻度表にグループ化されていません(例 d= [1,1,2,3,3,3,6,6,7,7,7,8,8,8,...].ただし、この場合、答えが見つかりませんでした。データを単一に変換したくありません最初のようにリストを展開しd、ヒストグラム関数を使用します。

4

3 に答える 3

15
import numpy as np
values = [1,2,3,6,7,8]
freqs = [2,1,3,2,3,3]

hist, _ = np.histogram(values, bins=[1, 4, 7, 10], weights=freqs)
print hist

出力:

[6 2 6]
于 2013-03-29T05:37:49.157 に答える
0

繰り返しのある配列/リストでデータが与えられたときに解決策を見つけました

ソリューションが何であるかはわかりませんでしたが、イテレータの取得をサポートしている場合は、リスト全体を作成する代わりに生成できます。

インポート itertools

values = [1,2,3,6]
freqs =  [2,1,3,2]

v_iter = itertools.chain(*[ itertools.repeat(v,f) for v, f in zip(values, freqs) ])

#for x in v_iter:
#    print x

your_solution(v_iter)
于 2013-03-29T05:38:26.307 に答える
0

あなたはこれを試すことができます:

import collections
d=[1,1,2,3,3,3,6,6,7,7,7,8,8,8]
collections.Counter([i-i%3+3 for i in d])

それはあなたが望むもので辞書を生成します。

于 2013-03-29T05:17:45.667 に答える