Вам придется делать это итеративно, постепенно извлекая монотонные c координаты из оставшейся части вашего массива:
import numpy as np
cords = np.array([[1,1],[2,3],[2,4],[2,5],[4,3],[4,5],[4,6],[4,7],[5,7],[5,5]])
result = []
while cords.size>0:
mask = np.insert(cords[:-1,0] != cords[1:,0],0,[True])
result.append(cords[mask,:])
cords = cords[mask==False,:]
Вывод:
for mono in result: print(list(map(list,mono)))
[[1, 1], [2, 3], [4, 3], [5, 7]]
[[2, 4], [4, 5], [5, 5]]
[[2, 5], [4, 6]]
[[4, 7]]
примечание: предполагается, что точки расположены в порядке их координаты х. Вам нужно будет отсортировать их заранее, если это не так.