0
我有一個由1和零組成的大型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)
任何想法如何解決這個問題?
ps。 我試圖標註的完整數組包含350219二維數組。
我認爲你需要指定'structure'值,給出1d的2d陣列,而不是像默認假定的那樣的3d陣列 –
當我定義2d結構時,如: [[0,1,0], [1,1,1], [0,1,0]] 我得到的錯誤:結構和輸入必須具有相同的排名 –
你需要2D結構爲3D,即其中一個DIMS的長度應爲1. –