Добрый вечер! У меня есть объемный массив (около 30 тысяч элементов), и метрика между любыми элементами. Мне необходимо посчитать матрицу расстояний (достаточно треугольной), даже если это займет много памяти.
Сейчас используется следующий код:
distance_matrix = np.ndarray((len(foo),len(foo)))
for i, bar1 in enumerate(foo):
for j, bar2 in enumerate(foo[i+1:]):
distance_matrix[i,j] = hight_level_python_function(bar1, bar2)
И работает он очень долго, даже если разбивать матрицу на несколько, и считать каждую в отдельном процессе. На низкоуровневых языках переписать метрику необоснованно трудозатратно. Кеш на hight_level_python_function уже есть.
Как быть?