Floatta (her zaman 0'dan az) bir değer kümesi var. Histogram içine binmek istediğim, i, e. histogramda her çubuk değerinin aralığını ihtiva [0,0.150)Python'da histogramdaki float değerleri nasıl oluşur?
Ben veri şuna benzer: Benim kod Whith
0.000
0.005
0.124
0.000
0.004
0.000
0.111
0.112
Ben
[0, 0.005) 5
[0.005, 0.011) 0
...etc..
benziyor sonuç almak için beklemek altında
Bu kodla böyle bir şey yapmaya çalıştım. Ama işe yaramıyor. Bunu yapmanın doğru yolu nedir?
#! /usr/bin/env python
import fileinput, math
log2 = math.log(2)
def getBin(x):
return int(math.log(x+1)/log2)
diffCounts = [0] * 5
for line in fileinput.input():
words = line.split()
diff = float(words[0]) * 1000;
diffCounts[ str(getBin(diff)) ] += 1
maxdiff = [i for i, c in enumerate(diffCounts) if c > 0][-1]
print maxdiff
maxBin = max(maxdiff)
for i in range(maxBin+1):
lo = 2**i - 1
hi = 2**(i+1) - 1
binStr = '[' + str(lo) + ',' + str(hi) + ')'
print binStr + '\t' + '\t'.join(map(str, (diffCounts[i])))
~
Eh, [0, 0,005 olarak tanımlanan aralıklar) (sağ açık) ve varsa, "Sen ... beklediğiniz" örneğinde [0.005, 0.011) (kapalı sola) daha sonra çıkış olmalıdır: [0, 0.005] 4 [0.005, 0.011) 1 vb ... – Gacek
"Çalışmıyor gibi görünüyor mu?" Herhangi bir özel şikayet? Ya da herkesin onu çalıştırması ve çıktının neyi sevmediğini tahmin etmesini bekler misiniz? –
Tekerleği yeniden icat etmekten kaçınmak için, özellikle bir sonraki adım histogramınızı çiziyorsa: Tüm bunları ele alan Matplotlib çerçevesini kullanmayı düşünmelisiniz. – RedGlyph