Поскольку ваши евклидовы расстояния находятся в скалярах, это эквивалентно абсолютному значению между каждой точкой. Таким образом, вы можете повторять свои массивы в соответствующем порядке, используя np.repeat
и np.tile
, и просто вычитать свои массивы друг от друга:
import numpy as np
a = [[1, 2, 3], [4, 5, 6]]
b = [[10, 20]]
a1 = np.array(a).flatten()
b1 = np.array(b).flatten()
Final_distance = np.abs(np.subtract(np.repeat(a1, len(b1)), np.tile(b1, len(a1))))
Что возвращает:
array([ 9, 19, 8, 18, 7, 17, 6, 16, 5, 15, 4, 14])