Мой следующий код на Python очень медленный, есть ли возможность полностью написать эту часть с помощью оператора Numpy?
m = len(self.man_list)
s = len(self.newnew)
self.zeroMatrix = np.zeros((m,s))
for k in range(m):
a1 = self.man_list[k][2]
b1 = self.man_list[k][0]
a2 = self.man_list[k][3]
b2 = self.man_list[k][1]
for f, part in enumerate(self.extra_list):
x1 = self.extra_list[f][0]
y1 = self.extra_list[f][2]
x2 = self.extra_list[f][1]
y2 = self.extra_list[f][3]
first = np.array((x1, y1))
second = np.array((x2, y2))
third = np.array((a1, b1))
forth = np.array((a2, b2))
dist1 = np.linalg.norm(first - third)
dist2 = np.linalg.norm(second - forth)
distance = (dist1 + dist2)
self.zeroMatrix[k][f] = distance
Прежде всего, я создаю матрицу с нулями (self.zeroMatrix
).
self.man_list
и self.extra_list
содержат начальную и конечную точки координат линий.Например:
self.man_list = [ [ [1,2], [3,4] ],...]
self.extra_list = [ [ [11,30], [4, 10] ],...]
Я получаю расстояние от каждой строки первого списка до каждой строки другого списка, затем я регистрирую это значение расстояния в self.zeroMatrix
.
IЯ очень благодарен за ваши ответы!