微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

代码的左侧如何为count和bin_edges分配值?谁能简要解释一下这段代码

如何解决代码的左侧如何为count和bin_edges分配值?谁能简要解释一下这段代码

我想知道bin_edges一次如何分配计数和np.histogram值。

counts,bin_edges=np.histogram(iris_setosa['sepal_length'],bins=10,density=True)

解决方法

假设data是一维numpy数组,而bins是严格的正整数,则代码大致类似于:

import numpy as np

def numpy_histogram(data,bins=10,density=False):
    xmin = data.min()
    xmax = data.max()
    bin_edges = np.linspace(xmin,xmax,bins + 1)
    counts = np.zeros(bins,dtype=int)
    bin_indices = ((data - xmin) / (xmax - xmin) * bins * 0.999999).astype(int)
    for i in bin_indices:
        counts[i] += 1
    if density:
        counts = counts / sum(counts) / (bin_edges[1] - bin_edges[0])
    return counts,bin_edges

counts,bin_edges = numpy_histogram(np.random.uniform(1,10,20),density=True)
print(sum(counts),counts)

因此,数据的最小值和最大值用于定义bin边界。 (边界比箱子多一个)。然后从每个数据值中减去xmin,然后除以数据的总范围。然后乘以箱数。这标识了该值应到达的bin的索引。需要以小于1的因子进行校正,以使最右边的值不会落在以下(未定义)的bin中。

density=True时,计数被归一化,以使所有条形的面积之和为1。条形的宽度为两个连续bin_edges之间的差值。

PS:关于Python同时分配多个元素,this question很有趣。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。