scipy.ndimage.center_of_mass¶

scipy.ndimage.
center_of_mass
(input, labels=None, index=None)[source]¶ Calculate the center of mass of the values of an array at labels.
 Parameters
 inputndarray
Data from which to calculate centerofmass. The masses can either be positive or negative.
 labelsndarray, optional
Labels for objects in input, as generated by ndimage.label. Only used with index. Dimensions must be the same as input.
 indexint or sequence of ints, optional
Labels for which to calculate centersofmass. If not specified, all labels greater than zero are used. Only used with labels.
 Returns
 center_of_masstuple, or list of tuples
Coordinates of centersofmass.
Examples
>>> a = np.array(([0,0,0,0], ... [0,1,1,0], ... [0,1,1,0], ... [0,1,1,0])) >>> from scipy import ndimage >>> ndimage.measurements.center_of_mass(a) (2.0, 1.5)
Calculation of multiple objects in an image
>>> 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.measurements.center_of_mass(b, lbl, [1,2]) [(0.33333333333333331, 1.3333333333333333), (3.5, 2.5)]
Negative masses are also accepted, which can occur for example when bias is removed from measured data due to random noise.
>>> c = np.array(([1,0,0,0], ... [0,1,1,0], ... [0,1,1,0], ... [0,1,1,0])) >>> ndimage.measurements.center_of_mass(c) (4.0, 1.0)
If there are division by zero issues, the function does not raise an error but rather issues a RuntimeWarning before returning inf and/or NaN.
>>> d = np.array([1, 1]) >>> ndimage.measurements.center_of_mass(d) (inf,)