Поскольку вы используете NumPy, вы можете использовать numpy.hypot
:
def func(points):
centroid = np.mean(points, axis=0)
return np.sum(np.hypot(points[:,0]-centroid[0], points[:,1]-centroid[1]))
Мне кажется, хотя я не уверен, что индексирование с использованием синтаксиса numpy [:, n] быстрее, чем понимание списка. Точно так же использование np.sum
должно быть быстрее, чем использование sum
в Python.
ПРИМЕЧАНИЕ: hypot
вычисляет квадратный корень, таким образом перемещая квадратный корень внутри суммы. Это отражает уравнение в вашем вопросе, хотя ваш код делает что-то другое.