2016-04-28 3 views
0

У меня есть большой массив 3d numpy, который состоит из единиц и нулей. Я хотел бы использовать инструмент scipy.ndimage.label для обозначения функций в каждом поддиапазоне (2d).метка 3d numpy массив с scipy.ndimage.label

Подмножество 3d-массив выглядит следующим образом:

subset=np.array([[[1, 0, 0], 
    [1, 0, 1], 
    [0, 0, 0]], 

    [[0, 0, 0], 
    [1, 0, 1], 
    [0, 0, 1]], 

    [[0, 0, 0], 
    [1, 0, 0], 
    [0, 1, 1]], 

    [[0, 0, 0], 
    [1, 0, 0], 
    [1, 1, 1]]], dtype=uint8) 

Когда я использую инструмент этикетки на небольшой части этого подмножества работ исправьте:

>>>label(subset[0:3])  
(array([[[1, 0, 0], 
    [1, 0, 2], 
    [0, 0, 0]], 

    [[0, 0, 0], 
    [1, 0, 2], 
    [0, 0, 2]], 

    [[0, 0, 0], 
    [1, 0, 0], 
    [0, 2, 2]]]), 2) 

Однако, когда я использую все подмножество инструмента метки не работает должным образом:

>>>label(subset) 
(array([[[1, 0, 0], 
    [1, 0, 1], 
    [0, 0, 0]], 

    [[0, 0, 0], 
    [1, 0, 1], 
    [0, 0, 1]], 

    [[0, 0, 0], 
    [1, 0, 0], 
    [0, 1, 1]], 

    [[0, 0, 0], 
    [1, 0, 0], 
    [1, 1, 1]]]), 1) 

Любые идеи по решению этой проблемы?

пс. Полный массив, который я пытаюсь сделать, состоит из массивов 350219 2d.

+1

Я думаю, вам нужно указать 'structure' значение, дающее 2d-массив из 1s, а не 3d-массив, который будет приниматься по умолчанию –

+0

Когда я определяю структуру 2d, например: [[0, 1, 0], [1, 1, 1], [0, 1, 0]] Я получаю ошибку: структура и вход должны иметь равный ранг –

+1

вам нужна 2d-структура, чтобы быть 3d, то есть одна из тусклостей должна иметь длину 1. –

ответ

0

Я ответил на этот вопрос с помощью дан-человека.

я должен был определить новый 3D структуру для инструмента этикетки:

str_3D=array([[[0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0]], 

    [[0, 1, 0], 
    [1, 1, 1], 
    [0, 1, 0]], 

    [[0, 0, 0], 
    [0, 0, 0], 
    [0, 0, 0]]], dtype='uint8') 

Теперь метка возвращает следующее для моего подмножества:

>>> label(subset,structure=str_3D) 
# outputs: 
(array([[[1, 0, 0], 
    [1, 0, 2], 
    [0, 0, 0]], 

    [[0, 0, 0], 
    [3, 0, 4], 
    [0, 0, 4]], 

    [[0, 0, 0], 
    [5, 0, 0], 
    [0, 6, 6]], 

    [[0, 0, 0], 
    [7, 0, 0], 
    [7, 7, 7]]]), 7)