की दक्षता में सुधार कैसे कर सकता हूं मुझे लेबल युक्त एक numpy सरणी मिली है। मैं अपने आकार और बाध्यकारी बॉक्स के आधार पर प्रत्येक लेबल के लिए एक संख्या की गणना करना चाहता हूं। मैं इसे और अधिक कुशलता से कैसे लिख सकता हूं ताकि बड़े सरणी (~ 15000 लेबल) पर उपयोग करना यथार्थवादी हो?मैं इस numpy लूप
A = array([[ 1, 1, 0, 3, 3],
[ 1, 1, 0, 0, 0],
[ 1, 0, 0, 2, 2],
[ 1, 0, 2, 2, 2]])
B = zeros(4)
for label in range(1, 4):
# get the bounding box of the label
label_points = argwhere(A == label)
(y0, x0), (y1, x1) = label_points.min(0), label_points.max(0) + 1
# assume I've computed the size of each label in a numpy array size_A
B[ label ] = myfunc(y0, x0, y1, x1, size_A[label])
वास्तविक उपयोग मामले में 'ए' कितना बड़ा है? –
Ballpark 7000x9000 – ajwood
क्या आपने कुछ प्रोफाइलिंग किया है यह देखने के लिए कि आपके कौन से बयान आपको धीमा कर रहे हैं? हो सकता है कि यह 'myfunc' फ़ंक्शन है जिसे लूप से बाहर निकलने वाले अलग-अलग सरणी में y0, x0, y1, x1 को सहेजकर और केवल एक बार फ़ंक्शन को कॉल करके सहेजा जा सकता है। अन्यथा, यदि गति वास्तव में मायने रखती है, तो आप यह देखना चाहेंगे कि कुछ सी कोड करने के लायक है या नहीं। मैंने नमस्ते सरणी के साथ काम करते समय साइथन को वास्तव में आरामदायक महसूस किया। –