2013-09-20 10 views
15

द्वारा खोज पंक्ति सूचकांक प्राप्त करें मैं numpy के लिए नया हूँ और मैं अजगर में यादृच्छिक जंगल के साथ क्लस्टरिंग लागू कर रहा हूँ। मेरा सवाल है:Numpy Array पंक्ति

मुझे सरणी में सटीक पंक्ति का सूचकांक कैसे मिल सकता है? उदाहरण

[[ 0. 5. 2.] 
[ 0. 0. 3.] 
[ 0. 0. 0.]] 

के लिए और मैं [0. 0. 3.] के लिए देखने के लिए और परिणाम 1 (दूसरी पंक्ति के सूचकांक) के रूप में मिलता है।

कोई सुझाव? कोड को फॉलो करता है (काम नहीं कर रहा है ...)

for index, element in enumerate(leaf_node.x): 
     for index_second_element, element_two in enumerate(leaf_node.x): 
      if (index <= index_second_element): 
       index_row = np.where(X == element) 
       index_column = np.where(X == element_two) 
       self.similarity_matrix[index_row][index_column] += 1 
+1

आपको लघु, स्वयं युक्त, सही (संकलित), उदाहरण http://www.sscce.org/ प्रदान करना चाहिए। उल्लेख नहीं है कि 'काम नहीं कर रहा' समस्या का विवरण नहीं है। – zero323

उत्तर

39

ऐसा कुछ क्यों नहीं करते?

>>> a 
array([[ 0., 5., 2.], 
     [ 0., 0., 3.], 
     [ 0., 0., 0.]]) 
>>> b 
array([ 0., 0., 3.]) 

>>> a==b 
array([[ True, False, False], 
     [ True, True, True], 
     [ True, True, False]], dtype=bool) 

>>> np.all(a==b,axis=1) 
array([False, True, False], dtype=bool) 

>>> np.where(np.all(a==b,axis=1)) 
(array([1]),) 
+0

क्या आप वाइल्डकार्ड के साथ ऐसा कर सकते हैं - कहें कि पहले "0." "किसी भी मूल्य" के रूप में अनुमति दी जाएगी? –

+1

यदि मैं समझता हूं कि आप सही ढंग से प्रयास करते हैं: 'a [:, 1:] == np.array ([0, 3])' '== b' के बजाय। तो हम क्या करते हैं केवल पहले कॉलम को टुकड़ा करते हैं और दिखाए गए अनुसार तुलना करते हैं। – Daniel

+0

ठीक है - तो वाइल्डकार्ड सवाल से बाहर हैं। उत्कृष्ट स्पष्टीकरण। धन्यवाद –