labeled_comprehension#
- scipy.ndimage.labeled_comprehension(input, labels, index, func, out_dtype, default, pass_positions=False)[Quelle]#
Ungefähr äquivalent zu [func(input[labels == i]) for i in index].
Wendet sequenziell eine beliebige Funktion (die mit array_like Eingaben arbeitet) auf Teilmengen eines N-dimensionalen Bildarrays an, die durch labels und index spezifiziert sind. Es besteht die Option, der Funktion PositionsParameter als zweites Argument zu übergeben.
- Parameter:
- inputarray_like
Daten, aus denen labels zur Verarbeitung ausgewählt werden.
- labelsarray_like oder None
Beschriftungen für Objekte in input. Wenn nicht None, muss das Array die gleiche Form wie input haben. Wenn None, wird func auf das verflachte input angewendet.
- indexint, Sequenz von ints oder None
Teilmenge von labels, auf die func angewendet werden soll. Wenn ein Skalar, wird ein einzelner Wert zurückgegeben. Wenn None, wird func auf alle Nicht-Null-Werte von labels angewendet.
- funccallable
Python-Funktion, die auf labels aus input angewendet werden soll.
- out_dtypedtype
Dtype, der für result verwendet werden soll.
- defaultint, float oder None
Standardrückgabewert, wenn ein Element von index nicht in labels vorhanden ist.
- pass_positionsbool, optional
Wenn True, werden lineare Indizes als zweites Argument an func übergeben. Standard ist False.
- Rückgabe:
- resultndarray
Ergebnis der Anwendung von func auf jedes der labels zu input in index.
Beispiele
>>> 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. ])
Rückgriff auf default
>>> lbls = np.arange(1, nlbl+2) >>> ndimage.labeled_comprehension(a, lbl, lbls, np.mean, float, -1) array([ 2.75, 5.5 , 6. , -1. ])
Übergabe von Positionen
>>> 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.])