В numpy я пытаюсь извлечь минимальное расстояние до города.
Расстояния - это одна строка в матрице, например,
[50,33,66,55]
toVisit - это одна строка минус посещенные индексы, например,
visitedIndices = [0,3]
toVisit = [33,66]
Эта строка кода получает индекс минимального значения в toVisit.
city = np.where(distances == toVisit.min())[0][0]
Проблема возникает, если для расстояний задано дублирующее значение для расстояния, так как 2 индекса будут возвращены этимстрока кода.Я хочу исключить возможность возврата каких-либо индексов, которые мы посетили ранее.
Я мог бы добавить что-нибудь, чтобы проверить, посещался ли индекс впоследствии aka:
city = np.where(distances == toVisit.min())[0]
for index in city:
if index not in visited:
city = index
Но, безусловно, долженбыть способом сделать это в предложении where?
Редактировать: Если вы запустите это:
distances = [20, 36, 55, 36]
visited = [0, 1]
toVisit = [55, 36]
city = np.where(distances == toVisit.min())[0]
city будет равен двум индексам 1 и 3, как мы ранее посетили индекс 1Я хочу исключить этот индекс из появившегося в результате:
city = np.where(distances == toVisit.min())[0]
Таким образом, город будет равен только индексу 3