scipy.ndimage.

find_objects#

scipy.ndimage.find_objects(входные данные, max_label=0)[источник]#

Найти объекты в помеченном массиве.

Параметры:
входные данныеndarray целых чисел

Массив, содержащий объекты, определенные различными метками. Метки со значением 0 игнорируются.

max_labelint, необязательный

Максимальная метка для поиска в входные данные. Если max_label не задан, возвращаются позиции всех объектов.

Возвращает:
object_slicesсписок кортежей

Список кортежей, где каждый кортеж содержит N срезов (где N — размерность входного массива). Срезы соответствуют минимальному параллелепипеду, содержащему объект. Если число отсутствует, вместо среза возвращается None. Метка l соответствует индексу l-1 в возвращаемом списке.

Смотрите также

label, center_of_mass

Примечания

Эта функция очень полезна для выделения интересующего объёма внутри трёхмерного массива, который нельзя "просмотреть насквозь".

Примеры

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