2010-08-27 7 views

उत्तर

110

argmax() विधि सहायता चाहिए।

अद्यतन

(टिप्पणी को पढ़ने के बाद) मेरा मानना ​​है कि argmax() पद्धति के रूप में अच्छी तरह से बहु आयामी सरणी के लिए काम करेगा।

>>> a = array([[10,50,30],[60,20,40]]) 
>>> maxindex = a.argmax() 
>>> maxindex 
3 

अद्यतन 2

(KennyTM के लिए धन्यवाद की टिप्पणी) आप unravel_index(a.argmax(), a.shape) उपयोग कर सकते हैं एक टपल के रूप में सूचकांक पाने के लिए:

>>> from numpy import unravel_index 
>>> unravel_index(a.argmax(), a.shape) 
(1, 0) 
+1

लेकिन मैं एक बहुआयामी सरणी है। – kame

+0

@kame: अद्यतन उत्तर। ऊपर देखो। –

+50

इंडेक्स को टुपल के रूप में प्राप्त करने के लिए 'unravel_index (a.argmax(), a.shape) 'का उपयोग करें। – kennytm

4
जुड़ा हुआ प्रलेखन इस का एक उदाहरण देता है

(संपादित करें) मैं का एक पुराना उत्तर दे रहा था जिसे हटा दिया गया था। और स्वीकार्य उत्तर मेरे बाद आया था। मैं मानता हूं कि argmax मेरे उत्तर से बेहतर है।

क्या ऐसा करने के लिए यह अधिक पठनीय/सहज नहीं होगा?

numpy.nonzero(a.max() == a) 
(array([1]), array([0])) 

या,

numpy.argwhere(a.max() == a) 
+4

अनावश्यक रूप से धीमी, क्योंकि आप अधिकतम गणना करते हैं और फिर इसे सभी की तुलना करें। unravel_index (a.argmax(), a.shape)। – Peter

+0

मैंने इसके लिए मतदान किया क्योंकि यह ए में मैक्स() की घटनाओं की संख्या के बारे में कुछ भी नहीं मानता है। जबकि a.argmax() "पहली" घटना को वापस कर देगा (जो बहु-आयामी सरणी के मामले में बीमार है क्योंकि यह ट्रैवर्सल पथ की पसंद पर निर्भर करता है)। https://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.html#numpy.argmax मुझे यह भी लगता है कि np.where() np.nonzero() के बजाय एक अधिक प्राकृतिक/पठनीय चुना गया है। – FizxMike

संबंधित मुद्दे