1

1 と 0 で構成される大きな 3D numpy 配列があります。scipy.ndimage.label ツールを使用して、各サブアレイ (2d) の機能にラベルを付けたいと思います。

3d 配列のサブセットは次のようになります。

import numpy as np
from scipy.ndimage import label

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 個の 2 次元配列で構成されています。

4

1 に答える 1