python - 计算间隔之间的值数

标签 python arrays count

在 python 中是否有任何有效的方法来计算数字数组在特定间隔之间的次数?我将使用的间隔数可能会变得非常大

喜欢:

mylist = [4,4,1,18,2,15,6,14,2,16,2,17,12,3,12,4,15,5,17]

some function(mylist, startpoints):
   # startpoints = [0,10,20]
   count values in range [0,9]
   count values in range [10-19]

output = [9,10]

最佳答案

您必须至少迭代列表一次。

下面的解决方案适用于实现比较的任何序列/间隔( <> 等)并使用 bisect 算法在区间内找到正确的点,所以速度非常快。

它适用于 float 、文本或其他任何内容。只需传递一个序列和一个间隔列表。

from collections import defaultdict
from bisect import bisect_left

def count_intervals(sequence, intervals):
    count = defaultdict(int)
    intervals.sort()
    for item in sequence:
        pos = bisect_left(intervals, item)
        if pos == len(intervals):
            count[None] += 1
        else:
            count[intervals[pos]] += 1
    return count

data = [4,4,1,18,2,15,6,14,2,16,2,17,12,3,12,4,15,5,17]
print count_intervals(data, [10, 20])

将打印

defaultdict(<type 'int'>, {10: 10, 20: 9})

这意味着您有 10 个值 <10 和 9 个值 <20。

关于python - 计算间隔之间的值数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2946519/

相关文章:

SQL - 如何在where子句条件中添加计数

javascript - 使用 JavaScript 对字符串中的句子进行计数

python - 如何将计时器与返回数据帧的函数一起使用?

python - 如何配置 Sphinx auto flask 来记录 flask-restful API?

python - 如何使用 Scrapy 的 SQLAlchemy 创建 pg_trgm 索引?

r - 对返回原始维数的数组应用函数

python - 在Python中为XGBoost指定tree_method参数

arrays - 带有搜索器的 Tableview - 搜索效果很好,但选择元素显示错误的元素

javascript - 在javascript中从json数组动态生成表

mysql - SQL中按天按位置计数?