#### Previous topic

scipy.ndimage.zoom

#### Next topic

scipy.ndimage.extrema

# scipy.ndimage.center_of_mass

`scipy.ndimage.``center_of_mass`(input, labels=None, index=None)

  Calculate the center of mass of the values of an array at labels.

  Parameters: | input : ndarray Data from which to calculate center-of-mass. The masses can either be positive or negative. labels : ndarray, optional Labels for objects in input, as generated by ndimage.label. Only used with index. Dimensions must be the same as input. index : int or sequence of ints, optional Labels for which to calculate centers-of-mass. If not specified, all labels greater than zero are used. Only used with labels.
  Returns: | center_of_mass : tuple, or list of tuples Coordinates of centers-of-mass.

  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,)