Как индексировать столбцы с вычисляемым массивом? - PullRequest
0 голосов
/ 26 апреля 2018

Пожалуйста, посмотрите на этот код:

import numpy as np
from scipy.spatial import distance

#1
X = [[0,0], [0,1], [0,2], [0,3], [0,4], [0,5]]
c = [[0,0], [0,1], [0,3]]

#2
dists = distance.cdist(X, c)
print(dists)

#3
dmini = np.argmin(dists, axis=1)
print(dmini)

#4
mindists = dists[:, dmini]
print(mindists)

(# 1) Итак, у меня есть мои данные X, некоторые другие точки (центроиды) c, затем (# 2) я вычисляю расстояние от каждой точки в X до всех центроидов c, и сохраните результат в dists.

(# 3) Затем я выбираю индекс минимальных расстояний с помощью argmin.

(# 4) Теперь я хочу выбрать только значение минимальных значений, используя индексы, вычисленные на шаге № 3.

Однако я получаю странный вывод.

# dists
[[ 0.  1.  3.]
 [ 1.  0.  2.]
 [ 2.  1.  1.]
 [ 3.  2.  0.]
 [ 4.  3.  1.]
 [ 5.  4.  2.]]
#dmini
[0 1 1 2 2 2]

#mindists
[[ 0.  1.  1.  3.  3.  3.]
 [ 1.  0.  0.  2.  2.  2.]
 [ 2.  1.  1.  1.  1.  1.]
 [ 3.  2.  2.  0.  0.  0.]
 [ 4.  3.  3.  1.  1.  1.]
 [ 5.  4.  4.  2.  2.  2.]]

Читая здесь и там, кажется возможным выбрать определенные столбцы, дав список целых чисел (индексов). В этом случае я должен использовать значения dmini для индексации столбцов вдоль строк.

Я ожидал, что mindists будет в форме (6,). Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...