Как вернуть индекс из замаскированного массива на основе min (). Max () - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь реализовать K-средства ++ и использовать в основном Numpy вещание. Ниже мой код и вывод, который мне удалось получить до сих пор.

x0 = [2,1]
x1 = [1,2]
x2 = [8,1]
x3 = [9,6]
x4 = [6,5]
A = np.array([x0,x1,x2,x3,x4])
proximity = ((A[:,np.newaxis,:] - A)**2).sum(axis=-1)
#--> let's assume we have already 2 points returned as centroids (x0 and x3)
centroid_idx = np.array([0,3]).squeeze()
mask = np.zeros_like(proximity)
#--> mask includs centroids in columns --> array([0, 3])
mask[centroid_idx,:] = 1
#--> and remaining datapoints in rows
mask[:,np.setdiff1d(np.arange(A.shape[0]), centroid_idx)]
proximity_masked = np.ma.masked_array(proximity, mask)

Пока все хорошо. Но как вернуть index min (ось = -1) .max () из массива desire_masked?
Правильное значение равно 26, а затем [2,3]

[[-- -- -- -- --]
 [2  -- -- 80 --]
 [36 -- -- 26 --]
 [-- -- -- -- --]
 [32 -- -- 10 --]]
...