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