labeled_comprehension#
- scipy.ndimage.labeled_comprehension(входные данные, метки, index, функция, out_dtype, по умолчанию, pass_positions=False)[источник]#
Примерно эквивалентно [func(input[labels == i]) for i in index].
Последовательно применяет произвольную функцию (которая работает с входными данными типа array_like) к подмножествам N-мерного массива изображения, заданным метки и index. Существует возможность предоставить функции позиционные параметры в качестве второго аргумента.
- Параметры:
- входные данныеarray_like
Данные, из которых производится выбор метки для обработки.
- меткиarray_like или None
Метки для объектов в входные данные. Если не None, массив должен иметь ту же форму, что и входные данные. Если None, функция применяется к развернутому входные данные.
- indexint, последовательность int или None
Подмножество метки к которому применить функция. Если скаляр, возвращается одно значение. Если None, функция применяется ко всем ненулевым значениям метки.
- функцияcallable
Функция Python для применения к метки из входные данные.
- out_dtypedtype
Тип данных для использования в результат.
- по умолчаниюint, float или None
Значение по умолчанию, возвращаемое, когда элемент index не существует в метки.
- pass_positionsbool, необязательно
Если True, передавать линейные индексы в функция в качестве второго аргумента. По умолчанию False.
- Возвращает:
- результатndarray
Результат применения функция для каждого из метки to входные данные в index.
Примеры
>>> import numpy as np >>> a = np.array([[1, 2, 0, 0], ... [5, 3, 0, 4], ... [0, 0, 0, 7], ... [9, 3, 0, 0]]) >>> from scipy import ndimage >>> lbl, nlbl = ndimage.label(a) >>> lbls = np.arange(1, nlbl+1) >>> ndimage.labeled_comprehension(a, lbl, lbls, np.mean, float, 0) array([ 2.75, 5.5 , 6. ])
Возврат к по умолчанию:
>>> lbls = np.arange(1, nlbl+2) >>> ndimage.labeled_comprehension(a, lbl, lbls, np.mean, float, -1) array([ 2.75, 5.5 , 6. , -1. ])
Передача позиций:
>>> def fn(val, pos): ... print("fn says: %s : %s" % (val, pos)) ... return (val.sum()) if (pos.sum() % 2 == 0) else (-val.sum()) ... >>> ndimage.labeled_comprehension(a, lbl, lbls, fn, float, 0, True) fn says: [1 2 5 3] : [0 1 4 5] fn says: [4 7] : [ 7 11] fn says: [9 3] : [12 13] array([ 11., 11., -12., 0.])