1

(累積) 確率分布を生成するためにリスト内の値を正規化する必要がありますが、現在は 0 を取得しています。

これが私がやっていることです:

tests = []
#some code to populate tests which simulates
count = [x[0] for x in tests]
found = [x[1] for x in tests]
found.sort()
num = Counter(found)
freqs = [x for x in num.values()]
cumsum = [sum(item for item in freqs[0:rank+1]) for rank in xrange(len(freqs))]
normcumsum  = [float(x/numtests) for x in cumsum]

現在、cumsum と normcumsum は次のとおりです。

cumsum = [1, 2, 6, 12, 28, 39, 64, 85, 96, 98, 99, 100]
normcumsum = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]

normcumsum に cumsum/100 を含めるにはどうすればよいですか?

N>B はい、これらの変数名は少しばかげています。

4

2 に答える 2

6

x/numtests1/2整数除算を行っているため、常に0を返すのと同じように、常に0を返します

float(x)/numtestsするか、次のことを行う必要があります。

from __future__ import division

これは、python3 ではなく、python2 でのみ必要です。

デモ:

>>> [1/2, 3/2, 5/2]
[0, 1, 2]

>>> from __future__ import division

>>> [1/2, 3/2, 5/2]
[0.5, 1.5, 2.5]
于 2013-07-18T15:50:00.677 に答える