क्या सिसिपी में एक आयताकार फिल्टर है? मैं @ माइक टी के समाधान https://gis को दोहराना चाहता हूं। stackexchange.com/questions/9431/what-raster-smoothing-generalization-tools-are-available/162852 लेकिन गाऊसी ब्लर करने के बजाय, मैं एक आयताकार फिल्टर (अर्थात अनिवार्य रूप से एक स्टेप फंक्शन) लागू करना चाहता हूं।

-2
user308827 19 जिंदा 2017, 03:30

1 उत्तर

सबसे बढ़िया उत्तर

आप बस scipy.ndimage.convolve और खुद weights (फ़िल्टर) को परिभाषित करें। एक विशिष्ट और अनुकूलित आयताकार फ़िल्टर फ़ंक्शन भी है: uniform_filter

उदाहरण के लिए चौड़ाई 3 माध्य-फ़िल्टर लागू करने के लिए (यदि आप योग-फ़िल्टर चाहते हैं तो ndim*size से गुणा करें):

>>> from scipy.ndimage import uniform_filter
>>> uniform_filter([1,4,2,56,2,3,6,1,3,1,3], size=3)
array([ 2,  2, 20, 19, 20,  3,  3,  3,  1,  2,  2])

इसे बहुआयामी सरणियों पर भी लागू किया जा सकता है:

>>> uniform_filter(np.random.randint(0, 20, (10, 10)), size=3)  # 3x3 filter
array([[ 6,  7, 10,  9,  9,  7,  5,  7,  9, 12],
       [ 6,  7,  9,  9,  7,  6,  5,  5,  7,  9],
       [ 5,  8,  8,  9,  7,  6,  4,  4,  6,  8],
       [ 9, 10,  9, 10,  8,  6,  4,  4,  8, 11],
       [10, 12,  9, 10,  9, 10,  8,  8,  9, 10],
       [12, 12,  9, 10, 10, 10,  9,  9,  9,  9],
       [12, 11,  9,  8,  7,  8,  7,  8,  6,  5],
       [11, 10,  9,  9,  9,  9,  6,  8,  8,  9],
       [12,  9,  7,  7,  9,  8,  6,  6,  6,  8],
       [12,  9,  8,  9, 12, 10,  7,  5,  6,  9]])
>>> uniform_filter(np.random.randint(0, 20, (10, 10)), size=(5, 3))  # 5x3 filter
array([[ 7,  7,  8, 10, 11, 10, 11, 11, 12, 12],
       [ 7,  7,  7,  9, 10, 11, 11, 10,  9,  9],
       [ 7,  6,  6,  8,  8,  9,  9,  9,  8,  8],
       [ 6,  6,  6,  8,  8,  9,  8,  7,  7,  8],
       [ 8,  8,  7,  9,  8, 11,  8,  8,  6,  6],
       [ 7,  8,  7,  9,  8, 11,  7,  7,  5,  7],
       [ 9,  8,  8,  9,  9,  9,  7,  7,  7,  8],
       [ 8,  8,  8,  9, 10, 10,  8,  7,  6,  6],
       [ 9,  7,  6,  8,  9, 10,  8,  7,  6,  6],
       [ 9,  6,  6,  7, 10,  8,  8,  6,  6,  6]])
1
MSeifert 19 जिंदा 2017, 03:38
FYI करें: पूर्णांक इनपुट के साथ uniform_filter का उपयोग करते समय सावधान रहें: stackoverflow.com/questions/41489650/…
 – 
Warren Weckesser
19 जिंदा 2017, 11:31
वास्तव में, आप uniform_filter([1,4,2,56,2,3,6,1,3,1,3], size=3) के परिणाम में पूर्णांकों वाली समस्या का एक उदाहरण देख सकते हैं। परिणाम में मान 19 20 होना चाहिए।
 – 
Warren Weckesser
19 जिंदा 2017, 11:40