{ } Raw JSON

bundles / scipy latest / scipy / ndimage / _measurements / center_of_mass

function

scipy.ndimage._measurements:center_of_mass

source: /scipy/ndimage/_measurements.py :1485

Signature

def   center_of_mass ( input labels = None index = None )

Summary

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, the combined center of mass of all labels greater than zero will be calculated. Only used with labels.

Returns

center_of_mass : tuple, or list of tuples

Coordinates of centers-of-mass.

Notes

Array API Standard Support

center_of_mass has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.

====================  ====================  ====================
Library               CPU                   GPU
====================  ====================  ====================
NumPy                 ✅                     n/a                 
CuPy                  n/a                   ✅                   
PyTorch               ✅                     ⛔                   
JAX                   ⚠️ no JIT
Dask                  ⚠️ computes graph     n/a                 
====================  ====================  ====================

See dev-arrayapi for more information.

Examples

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)
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.center_of_mass(b, lbl, [1,2])
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.center_of_mass(c)
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.center_of_mass(d)

Aliases

  • scipy.ndimage.center_of_mass