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

计算一组范围内的元素数量

计算一组范围内的元素数量

FFIVE 2022-05-24 16:07:17
我在编写一个将 2 个参数(值、分隔符)作为列表并将每个范围中的元素数(由分隔符中的数字确定)作为一个列表返回的函数时遇到了麻烦。等于其中一个分隔符的元素应计入下面的 bin 中。我使用 if 和 elif 对数字进行排序,这在某种程度上给了我正确的想法。但是,我正在努力研究如何应用“箱数 = 分隔线数 + 1”这一事实def histogram(values, dividers):    count1 = 0    count2 = 0    count3 = 0    index = 0    for index in range(len(values)):        if values[index] <= min(dividers):           count1 = count1 + 1        elif min(dividers) < values[index] <= min(dividers):           count2 = count2 + 1        elif values[index] > max(dividers):           count3 = count3 + 1        index = index + 1     print("Number of elements in each bin is ", [count1, count2, count3])例如,当我运行参数 ([1,...,10], [2,5,7]) 时,答案应该是 [2,3,2,3] 因为范围内的元素数量低于 2, 2~5(不含5)、5~7(不含7)及7以上分别为2、3、2、3。但是目前,我得到了输出 [2,5,3]。PS 我的目标是在不使用 numpy.histogram 或任何 matplotlib 相关内容的情况下编写函数
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

这不是最有效的实现,但它不假定values已排序(只有分隔符是):


def histogram(values, dividers):

    bins = [0]*(len(dividers)+1)

    extended_dividers = [-float('inf')]+dividers+[float('inf')]

    for idx, divider in enumerate(extended_dividers[:-1]):

        bins[idx] = len([v for v in values if divider<v<=extended_dividers[idx+1]])

    return bins

另外,您的示例中的输出不应该是 1、2、3、4 吗?


查看完整回答
反对 回复 2022-05-24
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

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