【发布时间】:2014-11-01 16:02:01
【问题描述】:
我有一个关于numpy.histogram选项normed的问题,函数是:
numpy.histogram(a, bins=10, range=None, normed=False, weights=None, density=None)
根据定义:numpy.histogram
规范:布尔型,可选
由于令人困惑/错误的行为,该关键字在 Numpy 1.6 中已弃用。它将在 Numpy 2.0 中删除。请改用密度关键字。如果为 False,则结果将包含每个 bin 中的样本数。如果为 True,则结果是 bin 处的概率密度函数的值,归一化以使范围内的积分为 1。改用密度。 权重:array_like,可选
我用这个代码试试:
imhist, bins = histogram([0,1,2,3], bins=4, normed=True)
print "normed=True:", imhist
print "bins:", bins
Output:
normal=True: [ 0.33333333 0.33333333 0.33333333 0.33333333]
bins: [ 0. 0.75 1.5 2.25 3. ]
imhist, bins = histogram([0,1,2,3], bins=4)
print "normed=None:", imhist
print "bins:", bins
Output:
normal=None: [1 1 1 1]
bins: [ 0. 0.75 1.5 2.25 3. ]
我感到困惑的是当 normed=True 时,“结果是 bin 处的概率密度函数的值,归一化使得范围内的积分为 1。”因为我认为imhist应该是这样的:
normal=True: [0.25 0.25 0.25 0.25]
这 4 个值在 4 个 bin 中均等下降,这就是为什么“normal=None: [1 1 1 1]”
Value:[ 0 1 2 3 ]
bins: [ 0. 0.75 1.5 2.25 3. ]
我参考了这篇 How does numpy.histogram() work? 帖子,但它确实使用了 normed=True 选项。
【问题讨论】:
-
您是否将“范围内的积分”与“总和”混淆了?
-
@DSM 我对它返回的 imhist 感到困惑,它应该是 [0.25 0.25 0.25 0.25] 而不是 [ 0.33333333 0.33333333 0.33333333 0.33333333],它怎么会返回这个? 0.33333333 = 1/3,这看起来像是 3 个值中的一个值的概率。