Рассмотрим следующий код, который генерирует следующую dst
матрицу.
tmp = pd.DataFrame()
tmp['a'] = np.random.randint(1, 10, 5)
tmp['b'] = np.random.randint(1, 10, 5)
dst = pairwise_distances(tmp, tmp, metric='l2')
dst
, которая выглядит следующим образом
array([[0. , 5.38516481, 5. , 4.12310563, 2. ],
[5.38516481, 0. , 1.41421356, 3.16227766, 5. ],
[5. , 1.41421356, 0. , 4. , 4.12310563],
[4.12310563, 3.16227766, 4. , 0. , 5. ],
[2. , 5. , 4.12310563, 5. , 0. ]])
Теперь я хочу как-то получить 4
в качестве выходного столбца, потому что для row=0 and col=4
лежит минимальное расстояние row0
до другой строкиотдельно от себя. Я пытаюсь использовать следующий код, чтобы сделать работу! но np.nonzeros()
портит игру. np.argmin(dst[0, np.nonzero(dst[0,:])])
Я получаю 3
как вывод, где я должен получить 4
. Я понимаю, что np.nonzero()
возвращает другой набор измерений [1,2,3,4]
, из которых argmin
выбирает столбец 3rd
, который является действительным столбцом 4th
матрицы dst
. Нужна помощь! Заранее спасибо !!