scipy.ndimage.labeled_comprehension¶
- 
scipy.ndimage.labeled_comprehension(input, labels, index, func, out_dtype, default, pass_positions=False)[source]¶
- Roughly equivalent to [func(input[labels == i]) for i in index]. - Sequentially applies an arbitrary function (that works on array_like input) to subsets of an n-D image array specified by labels and index. The option exists to provide the function with positional parameters as the second argument. - Parameters
- inputarray_like
- Data from which to select labels to process. 
- labelsarray_like or None
- Labels to objects in input. If not None, array must be same shape as input. If None, func is applied to raveled input. 
- indexint, sequence of ints or None
- Subset of labels to which to apply func. If a scalar, a single value is returned. If None, func is applied to all non-zero values of labels. 
- funccallable
- Python function to apply to labels from input. 
- out_dtypedtype
- Dtype to use for result. 
- defaultint, float or None
- Default return value when a element of index does not exist in labels. 
- pass_positionsbool, optional
- If True, pass linear indices to func as a second argument. Default is False. 
 
- Returns
- resultndarray
- Result of applying func to each of labels to input in index. 
 
 - Examples - >>> 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. ]) - Falling back to default: - >>> lbls = np.arange(1, nlbl+2) >>> ndimage.labeled_comprehension(a, lbl, lbls, np.mean, float, -1) array([ 2.75, 5.5 , 6. , -1. ]) - Passing positions: - >>> 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.]) 
