cal*_*pto 4 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]
Run Code Online (Sandbox Code Playgroud)
您将必须至少迭代一次该列表。
以下解决方案可与实现比较(<,>等)的任何序列/间隔配合使用,并使用bisect算法在间隔中找到正确的点,因此速度非常快。
它可以使用浮点数,文本或其他任何东西。只需传递一个序列和间隔列表即可。
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])
Run Code Online (Sandbox Code Playgroud)
将打印
defaultdict(<type 'int'>, {10: 10, 20: 9})
Run Code Online (Sandbox Code Playgroud)
这意味着您有10个值<10和9个值<20。
我不知道你的清单会有多大,但这是另一种方法。
import numpy as np
mylist = [4,4,1,18,2,15,6,14,2,16,2,17,12,3,12,4,15,5,17]
np.histogram(mylist, bins=[0,9,19])
Run Code Online (Sandbox Code Playgroud)