Belirli bir sayısal dizi yapısının çevresini hesaplamak istiyorum. Çevreyle, numpy dizisindeki yapının tam çevresini kastediyorum. Yapı delikler içerebilir. Eğer tüm komşu hücreleri görüntüler de görebileceğiniz gibiSayısal dizinin çevresini hesapla
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
Ancak bunların toplamı yama çevresini eşit değildir:
Benim şu anki yaklaşımın böyle bir şeydir. Örnek dizideki delik, doğru şekilde 4 kenarı olmasına rağmen 1 olarak hesaplanır. Farklı şekillerdeki daha büyük deliklerle benzer sorunlar var.
Geçmişte benzer soruları sordum, ancak sonuçta sonuçta doğru çıktı değerlerinde çözülmeyen çözümler sağlandı. Birisi bunu nasıl başarabilir? Numpy, scipy ve baz paketlerinden başka paketler yoktur.
Bu örnekte ne değeri bekliyorsunuz? – Eric
Tam sayı değeri. Yukarıdaki test verisi setinde, son değer 20 olmalıdır, çünkü 20 kenar vardır. – Curlew