我想計算給定numpy陣列結構的周長。周長我的意思是numpy數組中結構的確切周長。該結構可以包括孔。計算numpy陣列的周長
我目前的形式給出的是這樣的:
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
正如你可以看到它顯示所有相鄰的細胞,但是它們的總和不等於補丁的周長。示例數組中的孔計算爲1,但它正確地具有4條邊。有不同形狀的大孔有類似的問題。
我在過去曾問過類似的問題,但都提供瞭解決方案,但最終無法解決正確的輸出值問題。 有人有一個想法如何做到這一點? 請不要包含比numpy,scipy和基礎包更多的其他軟件包。
在這個例子中你期望什麼值? – Eric
一個整數值。在上述測試數據集中,最終值應該是20,因爲有20個邊。 – Curlew