Numpy извлечение значений из 1d массива с использованием 2d массива индексов - PullRequest
0 голосов
/ 24 февраля 2020

Я начинаю с матрицы mxn, которая называется values. Затем я использую np.argpartition, чтобы получить k минимальных индексов для каждой из m строк, возвращаемых в новой матрице mxk под названием min_indices. Это может быть неправильно, но это то, что я сделал: min_indices = np.argpartition(values, k, axis=1)[:, :k]. Затем у меня есть матрица nx 1, которая называется labelsArray. Каждый индекс в min_indices соответствует индексу в этом массиве меток. То, что я хотел бы сделать, - это преобразовать (либо на месте, либо вернуть новую матрицу) каждый индекс в min_indices в его соответствующую метку (т.е. получить другую матрицу mxk result result[m][k] = labelsArray[min_indices[m][k]] для всех m и к). Я мог бы выполнить sh это программно, но есть ли эффективный и краткий способ выполнить это преобразование в значениях numpy?

, которые выглядят следующим образом: [[0.5, 0.7, 0.8, 0.9, ... n ], [0,3, 0,4, 0,2, 0,6, ... n], .... m]

, поэтому в каждой строке содержится m значений с плавающей запятой и всего n строк. Таким образом, в основном каждый тестовый пример (представленный строкой) имеет расстояние, заданное столбцом для каждой обучающей выборки.

labelArray выглядит так: [машина, птица, муха, плакат, ... n]

при k = 2 результат должен выглядеть следующим образом: [[fly, poster], [car, bird], [bird, poster], ... n]

Итак, min_indices в основном должен иметь индексы k- ближайшие соседи для каждого тестового примера. Затем я хотел бы использовать эти индексы, чтобы получить метки каждого из этих соседей из labelArray для каждого тестового примера. Объясняется примером выше.

...