2011-10-15 11 views
11

क्या कोई कार्यान्वयन है जहां मैं अपनी चाबियों के आधार पर दो सरणी में शामिल हो सकता हूं? जिसमें से बात करते हुए, NumPy कॉलम में से किसी एक में कुंजी स्टोर करने का कैननिकल तरीका है (NumPy में 'id' या 'rownames' विशेषता नहीं है)?एनएमपीई में एसक्यूएल जॉइन या आर का विलय() फ़ंक्शन?

उत्तर

12

आप केवल numpy का उपयोग करना चाहते हैं, तो आप संरचित सरणियों और lib.recfunctions.join_by समारोह (http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html देखें) का उपयोग कर सकते हैं। एक छोटी सी उदाहरण:

In [1]: import numpy as np 
    ...: import numpy.lib.recfunctions as rfn 
    ...: a = np.array([(1, 10.), (2, 20.), (3, 30.)], dtype=[('id', int), ('A', float)]) 
    ...: b = np.array([(2, 200.), (3, 300.), (4, 400.)], dtype=[('id', int), ('B', float)]) 

In [2]: rfn.join_by('id', a, b, jointype='inner', usemask=False) 
Out[2]: 
array([(2, 20.0, 200.0), (3, 30.0, 300.0)], 
     dtype=[('id', '<i4'), ('A', '<f8'), ('B', '<f8')]) 

एक अन्य विकल्प पांडा उपयोग करने के लिए है (documentation)। मुझे इसके साथ कोई अनुभव नहीं है, लेकिन यह मानक numpy की तुलना में अधिक शक्तिशाली डेटा संरचनाओं और कार्यक्षमता प्रदान करता है, "संबंधपरक" या "लेबल" डेटा दोनों को आसान और सहज ज्ञान युक्त "। और यह निश्चित रूप से कार्यों में शामिल हो रहा है और विलय कर रहा है (उदाहरण के लिए http://pandas.sourceforge.net/merging.html#joining-on-a-key देखें)।

+0

आह, 'रिकफंक्शन' के बारे में भूल गया। मैं वर्तमान में पांडा का मूल्यांकन कर रहा हूं ... बहुत सारे विकल्प ... धन्यवाद। – hatmatrix

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