我的代碼在-10到10的範圍內生成某個值,範圍從[0,1) 代碼的值取值範圍爲-10到10,根據它的概率將它列入清單。例如,-10將被放入列表0次,因爲它對應於值0,並且10將被放置100次(作爲標準化),因爲它對應於範圍中的1。Numpy直方圖代表具有近似值的浮點數相同
下面是代碼:
#!/usr/bin/env python
import math
import numpy as np
import matplotlib.pyplot as plt
pos = []
ceilingValue = 0.82
pValues = np.linspace(0.00, ceilingValue, num=100*ceilingValue)
for i in xrange(int(100*ceilingValue)):
p = pValues[i]
y = -11.63*math.log(-2.36279*(p - 1))
for j in xrange(i):
pos.append(y)
avg = np.average(pos)
std = np.std(pos)
hist, bins = np.histogram(pos,bins = 100)
width = 0.7*(bins[1]-bins[0])
center = (bins[:-1]+bins[1:])/2
plt.bar(center, hist, align = 'center', width = width)
plt.show()
的問題是,直方圖會產生一個精確的情節,但某些值將打破趨勢。例如,-5.88對應於頻率計數中的約30個條目將在大約70處。我認爲python會看到這兩個值並將它們混合在一起,但我不知道如何解決它。但是,如果只是直方圖出現問題,那麼它並不重要,我並不需要它。我只是需要清單,如果它是正確的。
啊是啊,我看到了。所以現在我想將其規格化爲10萬次,我應該更多地提高垃圾箱嗎? – alvarezcl
正確 - 您擁有的數據點越多,您需要清除重疊的垃圾箱越多。下面ali_m的回答很聰明,但是這引出了你爲什麼要把這個情節放在第一位的問題,例如,繪製pos本身可能比直方圖更好 –