Собственно, работает, но написана совершенно не в духе Numpy, покажите, пожалуйста, как это должно в нем выглядеть.
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)
lines - массив точек, образующих линию, пример N.array(((-107,51.5),(-31,-72.5),(134,14.5)))
point - точка, пример N.array((21,-44.5))
возвращает индекс ближайшей линии, в данном случае 1.
Есть ли в numpy аналоги zip, map, filter? уж больно обширна документация, глаза разбегаются
Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…