scipy.ndimage.

find_objects#

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

在一个标记数组中查找对象。

参数:
input整型 ndarray

包含由不同标签定义的对象数组。值为 0 的标签将被忽略。

max_label整型,可选

input 中搜索的最大标签。如果未给出 max_label,则返回所有对象的位置。

返回:
object_slices元组列表

一个元组列表,每个元组包含 N 个切片(N 为输入数组的维度)。切片对应于包含对象的最小平行六面体。如果某个编号缺失,则返回 None 而不是切片。标签 l 对应于返回列表中的索引 l-1

另请参阅

label, center_of_mass

备注

此函数对于在无法“看穿”的 3D 数组中隔离感兴趣的体非常有用。

示例

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