find_objects — SciPy v1.15.2 Manual (original) (raw)

scipy.ndimage.

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

Find objects in a labeled array.

Parameters:

inputndarray of ints

Array containing objects defined by different labels. Labels with value 0 are ignored.

max_labelint, optional

Maximum label to be searched for in input. If max_label is not given, the positions of all objects are returned.

Returns:

object_sliceslist of tuples

A list of tuples, with each tuple containing N slices (with N the dimension of the input array). Slices correspond to the minimal parallelepiped that contains the object. If a number is missing, None is returned instead of a slice. The label l corresponds to the index l-1 in the returned list.

Notes

This function is very useful for isolating a volume of interest inside a 3-D array, that cannot be “seen through”.

Examples

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