为了账号安全,请及时绑定邮箱和手机立即绑定

每个 bin 的值

每个 bin 的值

温温酱 2021-11-16 16:46:16
我遇到以下问题:hist, edges = np.histogram(data, bins=50)如何访问每个 bin 的值?我想计算每个 bin 的平均值。谢谢
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

我认为此功能可以满足您的需求:


import numpy as np


def binned_mean(values, edges):

    values = np.asarray(values)

    # Classify values into bins

    dig = np.digitize(values, edges)

    # Mask values out of bins

    m = (dig > 0) & (dig < len(edges))

    values = values[m]

    dig = dig[m] - 1

    # Binned sum of values

    nbins = len(edges) - 1

    s = np.zeros(nbins, dtype=values.dtype)

    np.add.at(s, dig, values)

    # Binned count of values

    count = np.zeros(nbins, dtype=np.int32)

    np.add.at(count, dig, 1)

    # Means

    return s / count.clip(min=1)

例子:


print(binned_mean([1.2, 1.8, 2.1, 2.4, 2.7], [1, 2, 3]))

# [1.5 2.4]

但是,此函数中的直方图略有不同,因为np.digitize认为所有 bin 都是半封闭的(右侧或左侧),与np.histogram认为最后一个边缘是闭合的不同。


查看完整回答
反对 回复 2021-11-16
  • 1 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信