scipy.ndimage.

center_of_mass#

scipy.ndimage.center_of_mass(входные данные, метки=None, index=None)[источник]#

Вычислить центр масс значений массива по меткам.

Параметры:
входные данныеndarray

Данные, по которым вычисляется центр масс. Массы могут быть как положительными, так и отрицательными.

меткиndarray, необязательно

Метки для объектов в входные данные, как сгенерировано ndimage.label. Используется только с index. Размерности должны быть такими же, как входные данные.

indexint или последовательность ints, необязательно

Метки, для которых нужно вычислить центры масс. Если не указано, будет вычислен общий центр масс всех меток больше нуля. Используется только с метки.

Возвращает:
center_of_massкортеж или список кортежей

Координаты центров масс.

Примеры

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

Если возникают проблемы с делением на ноль, функция не вызывает ошибку, а выдаёт RuntimeWarning перед возвратом inf и/или NaN.

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