当前位置: 首页 > 面试题库 >

numpy直方图累积密度不等于1

苏彭薄
2023-03-14
问题内容

我从另一个线程@EnricoGiampieri对累积分布图python的回答中获得了提示,我写道:

# plot cumulative density function of nearest nbr distances
# evaluate the histogram
values, base = np.histogram(nearest, bins=20, density=1)
#evaluate the cumulative
cumulative = np.cumsum(values)
# plot the cumulative function
plt.plot(base[:-1], cumulative, label='data')

我在np.histogram的文档中输入了density = 1,它说:

“请注意,除非选择了单位宽度的bin,否则直方图值的总和将不等于1;这不是概率质量函数。”

好吧,的确,当绘制它们时,它们的总和不是1。但是,我不理解“统一宽度的箱”。当我将垃圾箱设置为1时,我得到一个空图表;当我将它们设置为人口规模时,我的总和不等于1(更像是0.2)。当我使用建议的40个垃圾桶时,它们的总和约为.006。

有人可以给我一些指导吗?谢谢!


问题答案:

您需要确保垃圾箱的宽度均为1。即:

np.all(np.diff(base)==1)

为此,您必须手动指定垃圾箱:

bins = np.arange(np.floor(nearest.min()),np.ceil(nearest.max()))
values, base = np.histogram(nearest, bins=bins, density=1)

你会得到:

In [18]: np.all(np.diff(base)==1)
Out[18]: True

In [19]: np.sum(values)
Out[19]: 0.99999999999999989


 类似资料:
  • 有没有一种方法来绘制的CDF累积直方图的熊猫系列在Python中只使用海运?我有以下几点: 我知道我可以用绘制累积直方图,然后我知道我可以使用,但我想在Seaborn中实现这两个功能,就像用,提供kde拟合和直方图。有办法吗?

  • 我想在不显示直方图的情况下绘制密度线,我使用了以下代码:

  • 问题内容: 在numpy或scipy(或其他库)中是否有一个函数将cumsum和cumprod的概念推广为任意函数。例如,考虑(理论上的)函数 func是一个接受两个浮点数并返回一个浮点数的函数。特殊情况 和 分别是cumsum和cumprod。例如,如果 我将其应用于: 我想要 问题答案: NumPy的ufunc有: 不幸的是,呼吁在“编Python函数失败,一个奇怪的错误: 这是将NumPy

  • 问题内容: 如何轻松地将NumPy数组中存储的多个灰度图像进行直方图均衡化? 我有这种4D格式的96x96像素NumPy数据: 问题答案: Moose指向此博客文章的评论相当不错。 为了完整起见,我在这里使用更好的变量名给出一个示例,并在问题中的4D数组中的1000张96x96图像上循环执行。它速度很快(在我的计算机上为1-2秒),只需要NumPy。

  • 我正在使用plotly为正在使用的数据集绘制直方图 这幅图很好,但我不清楚如何绘制一条平滑的密度曲线流过直方图的轮廓。 详细参考手册建议, 直方图跟踪用plot_ly或add_trace初始化: 还有一个histornorm函数,我假设它允许用户绘制密度曲线,但我不确定如何使用该函数。 有兴趣了解其他人是如何处理这个问题的。任何提示或建议都非常感谢。

  • 给定一些遵循任意分布的数字列表,我如何为,以便每个箱子中的面积等于(或接近)某个恒定面积,A?应通过将箱子中的项目数乘以箱子的宽度来计算面积,其值应不大于A。 这是一个MWE,用于显示具有正态分布样本数据的直方图: 这里是一个列表,表示垃圾箱边界的位置(参见此处的相关问题。