के परिधि की गणना करें मैं किसी दिए गए numpy सरणी संरचना के परिधि की गणना करना चाहता हूं। परिधि के साथ मेरा मतलब है कि numpy सरणी में संरचना का सटीक परिधि। संरचना छेद शामिल हो सकता है।numpy array
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
आप इसे सभी सन्निकट कक्षों को प्रदर्शित करता है देख सकते हैं, लेकिन उनमें से योग पैच की परिधि के बराबर नहीं है:
मेरे वर्तमान aproach कुछ इस तरह है। उदाहरण सरणी में छेद की गणना 1 के रूप में की जाती है हालांकि यह सही ढंग से 4 किनारों पर है। विभिन्न आकारों के अधिक छेद के साथ समान समस्याएं हैं।
मैंने अतीत में समान प्रश्न पूछे हैं, लेकिन सभी प्रदान किए गए समाधान जो किसी भी तरह से अंत में सही आउटपुट मानों में हल नहीं हुए हैं। किसी को पता है कि इसे कैसे पूरा किया जाए? कृपया numpy, scipy और बेस पैकेज से कोई अन्य पैकेज कृपया।
इस उदाहरण में आप किस मूल्य की अपेक्षा करते हैं? – Eric
एक पूर्णांक मान। उपरोक्त परीक्षण डेटा सेट में अंतिम मान 20 होना चाहिए, क्योंकि 20 किनारे हैं। – Curlew