center_of_mass#
- scipy.ndimage.center_of_mass(input, labels=None, index=None)[Quelle]#
Berechnet den Schwerpunkt der Werte eines Arrays anhand von Labels.
- Parameter:
- inputndarray
Daten, aus denen der Schwerpunkt berechnet werden soll. Die Massen können sowohl positiv als auch negativ sein.
- labelsndarray, optional
Labels für Objekte in input, wie sie von ndimage.label erzeugt werden. Wird nur mit index verwendet. Die Dimensionen müssen mit denen von input übereinstimmen.
- indexint oder Sequenz von ints, optional
Labels, für die Schwerpunkte berechnet werden sollen. Wenn nicht angegeben, wird der kombinierte Schwerpunkt aller Labels größer als Null berechnet. Wird nur mit labels verwendet.
- Rückgabe:
- center_of_massTupel oder Liste von Tupeln
Koordinaten der Schwerpunkte.
Beispiele
>>> import numpy as np >>> a = np.array(([0,0,0,0], ... [0,1,1,0], ... [0,1,1,0], ... [0,1,1,0])) >>> from scipy import ndimage >>> ndimage.center_of_mass(a) (2.0, 1.5)
Berechnung mehrerer Objekte in einem Bild
>>> b = np.array(([0,1,1,0], ... [0,1,0,0], ... [0,0,0,0], ... [0,0,1,1], ... [0,0,1,1])) >>> lbl = ndimage.label(b)[0] >>> ndimage.center_of_mass(b, lbl, [1,2]) [(0.33333333333333331, 1.3333333333333333), (3.5, 2.5)]
Negative Massen werden ebenfalls akzeptiert, was beispielsweise bei der Entfernung von Bias aus gemessenen Daten aufgrund von Zufallsrauschen auftreten kann.
>>> c = np.array(([-1,0,0,0], ... [0,-1,-1,0], ... [0,1,-1,0], ... [0,1,1,0])) >>> ndimage.center_of_mass(c) (-4.0, 1.0)
Wenn Probleme mit Division durch Null auftreten, löst die Funktion keinen Fehler aus, sondern gibt eine RuntimeWarning aus, bevor sie inf und/oder NaN zurückgibt.
>>> d = np.array([-1, 1]) >>> ndimage.center_of_mass(d) (inf,)