21
Мар
2018

Найти индексы минимальных элементов в столбцах матрицы расстояний, исключая элементы главной диагонали и строки с индексам уже найденных элементов

DF:

  1  2  3  4  5  KEY
1  0 65 95 80 49  11
2 65  0 78 69 16   9
3 95 78  0 55 88   6
4 80 69 55  0 87  18
5 49 16 88 87  0   2

Имеем таблицу условных расстояний между пунктами. Имеем ключ. Необходимо получить:

  1. Определить индекс (point_а) с наименьшим значением расстояния от пункта 2 (столбца) поделенного на KEY.
  2. Определить индекс (point_b) с наименьшим значением расстояния от point_a поделенного на KEY, исключая предыдущие пункты.
  3. Определить дальнейшие индексы по аналогии с point_b с применением генератора.

Моя попытка:

exept0_a = df[2] != 0
point_a = (df.loc[exept0_a, 2] / df.loc[exept0_a, 'KEY']).idxmin()
exept0_b = (df[point_a] != 0) & ~df.index.isin([point_a])
point_b = (df.loc[exept0_b, point_a] / df.loc[exept0_b, 'KEY']).idxmin()
exept0_c = (df[point_b] != 0) & ~df.index.isin([point_a, point_b])
point_c = (df.loc[exept0_c, point_b] / df.loc[exept0_c, 'KEY']).idxmin()

Касательно генератора идей нет. Прошу помощи сообщества Хочу получить:

list = [point_a, point_b, point_c]
[4, 1, 2]

Источник: https://ru.stackoverflow.com/questions/802652/%D0%9D%D0%B0%D0%B9%D1%82%D0%B8-%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D1%8B-%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-%D0%B2-%D1%81%D1%82%D0%BE%D0%BB%D0%B1%D1%86%D0%B0%D1%85-%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B-%D1%80%D0%B0%D1%81%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B9-%D0%B8%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D1%8F-%D1%8D%D0%BB%D0%B5%D0%BC

Тебе может это понравится...

Добавить комментарий