Da Sie NumPy verwenden, können Sie numpy.hypot
:
def func(points):
centroid = np.mean(points, axis=0)
return np.sum(np.hypot(points[:,0]-centroid[0], points[:,1]-centroid[1]))
Ich glaube, obwohl ich mir nicht sicher bin, dass die Indizierung mit der numpy-Syntax [:,n] schneller ist als eine Listenauflösung. Ähnlich ist die Verwendung von np.sum
sollte schneller sein als die Verwendung von Pythons sum
.
NOTA: hypot
berechnet die Quadratwurzel, wodurch die Quadratwurzel in die Summe verschoben wird. Dies entspricht der Gleichung in Ihrer Frage, obwohl Ihr Code etwas anderes tut.