#python #arrays #numpy #mean
Вопрос:
Я пытаюсь найти среднее значение X и Y отдельно, используя значения int в 3-м столбце. Мне удалось найти другое среднее значение, используя цикл for. Однако мне любопытно, есть ли способ векторизации для повышения эффективности. Спасибо вам за вашу помощь.
for i in range(M.shape[0]):
M[i, 0:2] = X[X[:,-1] == i, 0:2].mean(axis=0)
return M
M-массив (k, 2), где 1-й столбец-x, а 2-й столбец-y.
И k — количество кластеров.
M = array([[-84.5152, 19.1264],
[-76.6465, 20.2474],
[-76.6615, 20.342 ],
[-76.6415, 20.2342],
[-76.6472, 20.2203]])
X-это массив (n, 3), где 1-й столбец-x, 2-й столбец-y, а 3-й столбец-индекс M.
n — количество выборок.
X = array([[-84.5152, 19.1264, 0. ],
[-76.6465, 20.2474, 1. ],
[-76.6615, 20.342 , 2. ],
[-80.6016, 22.0641, 2. ],
[-80.3845, 21.9461, 2. ],
[-75.4638, 10.13 , 4. ]])
Комментарии:
1. Что происходит в вашем цикле for, когда i равно 3, в X нет строк, в которых последний столбец равен 3, поэтому
np.mean
возвращалось быnan