import numpy.linalg as linalg
def find_closest_line(lines, point):
ls = []
for x in zip(lines, lines[1:]):
n = (x[0][1]-x[1][1])*point[0]+(x[1][0]-x[0][0])*point[1]+ x[0][0]*x[1][1] - x[1][0]*x[0][1]
ls.append(abs(n / linalg.norm(x)))
return N.argmin(ls)
point - точка, пример N.array((21,-44.5))
возвращает индекс ближайшей линии, в данном случае 1.
Есть ли в numpy аналоги zip, map, filter? уж больно обширна документация, глаза разбегаются