scipy.ndimage.

find_objects#

scipy.ndimage.find_objects(input, max_label=0)[Quelle]#

Objekte in einem gelabelten Array finden.

Parameter:
inputndarray von Integers

Array, das Objekte mit verschiedenen Labels enthält. Labels mit dem Wert 0 werden ignoriert.

max_labelint, optional

Maximales Label, nach dem in input gesucht werden soll. Wenn max_label nicht angegeben ist, werden die Positionen aller Objekte zurückgegeben.

Rückgabe:
object_slicesliste von Tupeln

Eine Liste von Tupeln, wobei jedes Tupel N Slices enthält (wobei N die Dimension des Eingabearrays ist). Slices entsprechen dem minimalen Parallelepiped, das das Objekt enthält. Wenn eine Zahl fehlt, wird stattdessen None anstelle einer Slice zurückgegeben. Das Label l entspricht dem Index l-1 in der zurückgegebenen Liste.

Siehe auch

label, center_of_mass

Hinweise

Diese Funktion ist sehr nützlich, um ein interessantes Volumen innerhalb eines 3-D-Arrays zu isolieren, das nicht "durchgeschaut" werden kann.

Beispiele

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((6,6), dtype=int)
>>> a[2:4, 2:4] = 1
>>> a[4, 4] = 1
>>> a[:2, :3] = 2
>>> a[0, 5] = 3
>>> a
array([[2, 2, 2, 0, 0, 3],
       [2, 2, 2, 0, 0, 0],
       [0, 0, 1, 1, 0, 0],
       [0, 0, 1, 1, 0, 0],
       [0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 0]])
>>> ndimage.find_objects(a)
[(slice(2, 5, None), slice(2, 5, None)),
 (slice(0, 2, None), slice(0, 3, None)),
 (slice(0, 1, None), slice(5, 6, None))]
>>> ndimage.find_objects(a, max_label=2)
[(slice(2, 5, None), slice(2, 5, None)), (slice(0, 2, None), slice(0, 3, None))]
>>> ndimage.find_objects(a == 1, max_label=2)
[(slice(2, 5, None), slice(2, 5, None)), None]
>>> loc = ndimage.find_objects(a)[0]
>>> a[loc]
array([[1, 1, 0],
       [1, 1, 0],
       [0, 0, 1]])