与えられたnumpy配列構造の周囲を計算したいと思います。周囲とは、numpy配列内の構造体の正確な周囲を意味します。構造には穴が含まれる可能性があります。numpy配列の周囲を計算する
私の現在のaproachはこのようなものです:あなたはそれがすべての隣接するセルを表示見ることができるように
import numpy
a = numpy.zeros((6,6), dtype=numpy.int)
a[1:5, 1:5] = 1;a[3,3] = 0
# Way 1
s = ndimage.generate_binary_structure(2,1)
c = ndimage.binary_dilation(a,s).astype(a.dtype)
b = c - a
numpy.sum(b) # The result, however the hole is calculated as 1, although there are 4 edges
# Way 2
b = ndimage.distance_transform_cdt(a == 0,metric='taxicab') == 1
b = b.astype(int)
numpy.sum(b) # same as above
、しかし、それらの合計は、パッチの周囲を等しくありません。サンプル配列の穴は、正しく4つの辺を持っていますが、1として計算されます。異なる形状の大きな穴にも同様の問題があります。
私は過去に同様の質問をしましたが、最終的に正しい出力値で何らかの形で解決されなかったソリューションをすべて提供しました。 誰かがこれを達成するためのアイデアを持っていますか? numpy、scipy、ベースパッケージ以外のパッケージはご使用にならないでください。
この例では、どんな価値がありますか? – Eric
整数値です。上記のテストデータセットでは、20のエッジが存在するため、最終値は20でなければなりません。 – Curlew