अक्ष के साथ पहले गैर-शून्य मान ढूँढना मैं दो आयामी क्रमबद्ध सरणी की प्रत्येक पंक्ति के लिए पहले गैर-शून्य मान को खोजने का सबसे तेज़ तरीका ढूंढने का प्रयास कर रहा हूं। तकनीकी रूप से, सरणी में केवल मान शून्य और एक हैं, और यह "क्रमबद्ध" है।एक क्रमबद्ध दो आयामी numpy सरणी
उदाहरण के लिए, सरणी की तरह लग सकता है निम्नलिखित:
वी =
0 0 0 1 1 1 1
0 0 0 1 1 1 1
0 0 0 0 1 1 1
0 0 0 0 0 0 1
0 0 0 0 0 0 1
0 0 0 0 0 0 1
0 0 0 0 0 0 0
मैं खोजने के लिए argmax समारोह
argmax(v, axis=1))
इस्तेमाल कर सकते हैं, जब यह शून्य से एक में परिवर्तन , लेकिन मेरा मानना है कि यह प्रत्येक पंक्ति के साथ एक संपूर्ण खोज करेगा। मेरी सरणी उचित रूप से आकार (~ 2000x2000) होगी। क्या Argmax अभी भी लूप के भीतर प्रत्येक पंक्ति के लिए एक खोजशब्द दृष्टिकोण कर रहा है, या क्या कोई बेहतर विकल्प है?
इसके अलावा, सरणी हमेशा ऐसी होगी कि एक पंक्ति के लिए एक की पहली स्थिति हमेशा> = ऊपर की पंक्ति में एक की पहली स्थिति है (लेकिन यह गारंटी नहीं है कि इसमें एक होगा आखिरी कुछ पंक्तियां)। मैं इसे पिछली पंक्ति से पहले 1 की स्थिति के बराबर प्रत्येक पंक्ति के लिए एक लूप और "प्रारंभिक इंडेक्स वैल्यू" के साथ इसका फायदा उठा सकता हूं, लेकिन क्या मैं यह सोचने में सही हूं कि numpy argmax फ़ंक्शन अभी भी पाइथन में लिखे गए लूप को बेहतर प्रदर्शन करेगा ।
मैं केवल विकल्पों को बेंचमार्क कर दूंगा, लेकिन सरणी की किनार लंबाई काफी बदल सकती है (250 से 10,000 तक)।
मैं बहुत होगा Argmax फ़ंक्शन तेज़ी से होने की अपेक्षा करता है। यदि यह महत्वपूर्ण प्रदर्शन है तो आप C – SudoNhim