numpy には、役立つツールがいくつか用意されています。
In [90]: import numpy as np
In [91]: x = np.loadtxt('seq.dat', dtype=int)
In [92]: x
Out[92]:
array([[ 1, 2345],
[ 1, 2346],
[ 1, 2347],
[ 1, 2348],
[ 1, 2412],
[ 1, 2413],
[ 1, 2414],
[ 1, 2500],
[ 1, 2501],
[ 1, 2502],
[ 2, 3000],
[ 2, 3001],
[ 2, 3100],
[ 2, 3101],
[ 2, 3102],
[ 2, 3103]])
In [93]: skip = np.where(np.diff(x[:,1]) != 1)[0]
In [94]: istart = np.hstack((0, skip + 1))
In [95]: istop = np.hstack((skip, -1))
In [96]: groups = np.hstack((x[istart], x[istop, 1:]))
In [97]: groups
Out[97]:
array([[ 1, 2345, 2348],
[ 1, 2412, 2414],
[ 1, 2500, 2502],
[ 2, 3000, 3001],
[ 2, 3100, 3103]])
データの最初の列はグループ化の際に無視されるため、最初の列がグループの形成方法に影響を与える可能性がある場合は、微調整が必要になります。