gpt4 book ai didi

python - 从间隔数组创建类别

转载 作者:行者123 更新时间:2023-11-30 22:56:07 32 4
gpt4 key购买 nike

给定一组范围如下

dates = [[1200, 1300], [1100, 1300], [1200, 1300], [1200, 1400], [1100, 1400]]

我想以有效的方式提取所有可能的间隔,然后计算每个间隔中可用的范围数。

对于该示例,可能间隔的结果矩阵为:

     [1100, 1200]  [1200, 1300]  [1300, 1400]
0 0 1 0
1 1 1 0
2 0 1 0
3 0 1 1
4 1 1 1

然后,按列求和得出每个区间内的范围数

[1100, 1200]    2
[1200, 1300] 5
[1300, 1400] 2

最佳答案

这是一种为您提供所需的 numpy 矩阵 m 的方法,其中包含 bool 值:

def getOverlap(a, b):
return max(0, min(a[1], b[1]) - max(a[0], b[0]))

nodes = sorted(np.unique(np.array(dates).flatten()))
intervals = zip(nodes[:-1], nodes[1:])
# [(1100, 1200), (1200, 1300), (1300, 1400)]

m = np.array([[bool(getOverlap(i, d)) for d in dates] for i in intervals])

m.sum(axis=1)
# array([2, 5, 2])

请注意,如果您希望“矩阵”成为 pandas DataFrame,只需执行以下操作:

pd.DataFrame(m.transpose().astype(int), columns=intervals)

(1100, 1200) (1200, 1300) (1300, 1400)
0 0 1 0
1 1 1 0
2 0 1 0
3 0 1 1
4 1 1 1

关于python - 从间隔数组创建类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37138023/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com