2015-02-04 2 views
1

В настоящее время я реализую алгоритмы кластеризации в python. Поскольку конечный продукт будет использовать тысячи элементов массива, я пытаюсь минимизировать цикл и оптимизировать его как можно больше изначально.Быстрое сравнение элементов массива numpy, больше или меньше друг друга

Я использую cdist scipy для создания 2D-массива расстояний от выбранного количества случайных кластеров. Таким образом, 3 кластеров будут производить массив расстояний, скажут x точек:

distances = array([[5.5,2.5,7.3], 
        [1.0,4.6,2.2], 
        [6.0,2.8,7.1], 
        [5.3,4.6,1.5], 
        ...........]]) 

Где каждый столбец является расстоянием от кластера и каждая строка является точкой, я хочу, чтобы быстро создать массив значений 0,1 или 2, (с возможным решением одинаковых расстояний, происходящих) следующим образом:

label = array([1,0,1,2,.......]) 

быстрым решением, кроме цикла будет оценен.

ответ

1

Использование

distances.argmin(axis=1) 

который возвращает

array([1, 0, 1, 2]) 

для примера массива.

Для идентичных расстояний он возвращает первое вхождение такого элемента.

+0

Это похоже на то, что мне нужно, чтобы это сделать, большое спасибо. – ArcAngel

Смежные вопросы