scipy.ndimage.

center_of_mass#

scipy.ndimage.center_of_mass(input, labels=None, index=None)[源代码]#

计算数组在标签处的值的质心。

参数:
inputndarray

从中计算质心的数据。质量可以是正的或负的。

labelsndarray,可选

input 中对象的标签,由 ndimage.label 生成。仅与 index 一起使用。维度必须与 input 相同。

indexint 或 int 序列,可选

用于计算质心的标签。如果未指定,将计算所有大于零的标签的组合质心。仅与 labels 一起使用。

返回:
center_of_masstuple 或 tuple 列表

质心的坐标。

示例

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

计算图像中的多个对象

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

也接受负质量,例如,当由于随机噪声从测量数据中去除偏差时可能会发生这种情况。

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

如果存在除以零的问题,该函数不会引发错误,而是在返回 inf 和/或 NaN 之前发出 RuntimeWarning。

>>> d = np.array([-1, 1])
>>> ndimage.center_of_mass(d)
(inf,)