鉴于我有一个间隔[A, B]
(其中A, B
是整数(和(C_i, D_i), i = 1..N
的非重叠间隔列表(可以保证[A, B]
包含CC_4(,目标是减去[A, B]
的(C_i, D_i), i = 1..N
:
A, B = 1, 10
intervals = [2, 3], [5, 6]
...
result = [[1, 1], [4, 4], [7, 10]]
在numpy
中是否有内置功能,还是我必须以蛮力的方式进行?
我在numpy中对此一无所知,但是您不必使用蛮力。由于(c_i,d_i(间隔是非重叠的,因此可以对其进行排序,一旦排序,您就可以在它们上迭代:
def remove_intervals(A, B, intervals):
cur = A
result = []
for C, D in sorted(intervals):
if cur < C:
result.append([cur, C-1])
cur = D+1
if D < B:
result.append([cur, B])
return result
有Python Intervals软件包。