У меня есть большой массив 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.
Я думаю, вам нужно указать 'structure' значение, дающее 2d-массив из 1s, а не 3d-массив, который будет приниматься по умолчанию –
Когда я определяю структуру 2d, например: [[0, 1, 0], [1, 1, 1], [0, 1, 0]] Я получаю ошибку: структура и вход должны иметь равный ранг –
вам нужна 2d-структура, чтобы быть 3d, то есть одна из тусклостей должна иметь длину 1. –