Как я могу найти среднее значение 2 cols на основе значений 3-го col, используя numpy

#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