【问题标题】:can any one explain about this code output谁能解释一下这个代码输出
【发布时间】:2021-02-27 20:56:19
【问题描述】:

1.我试图理解这段代码,但我无法理解。你能帮帮我吗?

    a = np.arange(5)
    hist, bin_edges = np.histogram(a, density=True)
    hist

2.为什么是这样的输出?

    array([0.5, 0. , 0.5, 0. , 0. , 0.5, 0. , 0.5, 0. , 0.5])

【问题讨论】:

  • 你不明白什么? arange 还是 historgram?读过文档吗?看过abin_edges

标签: numpy histogram


【解决方案1】:

请检查此post。提示:当您调用 np.histogram 时,默认 bin 值为 10,因此您的输出有 10 个元素。

【讨论】:

    【解决方案2】:

    np.histogrambins 参数的默认值为 10。因此,直方图计算了您的数组元素属于哪个 bin。在这种情况下a = np.array([0, 1, 2, 3, 4])。如果我们使用10 bins 创建直方图,那么我们将区间 0-4(包括)分成 10 个相等的 bins。这给了我们(请注意,11 个端点给了我们 10 个 bin):

    np.linspace(0, 4, 11) = array([0. , 0.4, 0.8, 1.2, 1.6, 2. , 2.4, 2.8, 3.2, 3.6, 4. ])
    

    我们现在只需要查看您在数组a 中的元素属于哪个bin。我们可以这样计算:

    [1, 0, 1, 0, 0, 1, 0, 1, 0, 1]
    

    现在这仍然不完全是输出。 density=True 参数状态(来自文档):“如果 True,结果是 bin处的概率密度函数,归一化使得 范围内的 积分 为 1。”

    每个 bin(高度为 .5)的宽度为 .4,因此 5 x .5 x .4 = 1 是此参数的要求。

    【讨论】:

      【解决方案3】:

      numpy.arange(5) 生成一个由 5 个元素均匀分布的 numpy 数组:array([0,1,2,3,4])。 np.histogram(a, density=True) 使用 10 个 bin(这是默认值)返回 bin 边缘和从数组 a 获得的直方图的值。 bin_edges 给出了 bin 的边缘,而 histogram 给出了每个 bin 的出现次数。鉴于您设置了density=True,出现的次数被归一化(范围内的积分为 1。)。

      查看here了解更多信息。

      【讨论】:

        猜你喜欢
        • 2021-04-24
        • 1970-01-01
        • 2017-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多