Я пытаюсь реализовать 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 --]]