私はこのような範囲のリストを持っています:
[
(1,3),
(13,13),
(14,16),
(15,19),
]
交差する範囲を見つける必要があります。この場合、3行目と4行目です。numpyでこれを行う効率的な方法は何ですか?
これは、行が次の間隔と重複しているかどうかを示す列を返します。
a = np.array([(1,3),(13,13),(14,16),(15,19)])
a.sort()
intervals = pd.DataFrame(a,columns=['start','end'])
print((intervals.end-intervals.start.shift(-1))>0)
出力:
0 False
1 False
2 True
3 False
重複区間のインデックスを見つけます。
idx = np.array(np.where((intervals.end-intervals.start.shift(-1))>0))
print(np.hstack((idx,idx+1)))
#[[2 3]]
numpyでも同様のことができます。シフト関数を記述するか、scipyを使用してシフトするか、numpy.rollを使用する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加