numpy

2012-06-07 15 views
6

के साथ पहचान मैट्रिक्स कैसे बनाएं, मैं पहचान के साथ मैट्रिक्स पहचान कैसे बना सकता हूं? वहाँ सेnumpy

numpy.matrix(numpy.identity(n)) 

उत्तर

13

यहाँ एक सरल वाक्य रचना है:

np.matlib.identity(n) 

और यहाँ एक भी सरल वाक्य रचना है कि बहुत तेजी से चलाता है:

In [1]: n = 1000 
In [2]: timeit np.matlib.identity(n) 
100 loops, best of 3: 8.78 ms per loop 
In [3]: timeit np.matlib.eye(n) 
1000 loops, best of 3: 695 us per loop 
+2

क्या आपको 'matlib' का उपयोग करने की आवश्यकता है? आप सिर्फ 'np.eye (n) 'नहीं कर सकते हैं? 'matlib' विशेष रूप से matrices पैदा करता है," सामान्य "numpy कार्यों के विपरीत जो numpy arrays पैदा करता है। –

+0

प्रलेखन के अनुसार, ऐसा लगता है कि np.eye आवश्यक रूप से वर्ग matrices नहीं बनाता है। Np.matlib.eye का उपयोग करके प्रदर्शन लाभ के लिए, मुझे यकीन नहीं है। – hlin117

5

एक सरल वाक्य रचना मुझे नहीं लगता कि वहाँ एक सरल समाधान है है। आप इसे थोड़ा और अधिक कुशलता से, हालांकि कर सकते हैं:

numpy.matrix(numpy.identity(n), copy=False) 

यह अनावश्यक रूप से डेटा की प्रतिलिपि टाल।

+2

मैं 'np.identity', हमेशा उपयोग किया जाता आंख इस्तेमाल नहीं किया है .. क्या आप जानते हैं' np.eye' और यह एक के बीच अंतर क्या है? – wim

+0

@ विम: कोई फर्क नहीं पड़ता। 'numpy.eye()' थोड़ा और अधिक लचीला है। NumPy का इंटरफ़ेस बहुत सुव्यवस्थित नहीं है, और ओवरलैपिंग कार्यक्षमता वाले कई फ़ंक्शन मौजूद हैं। –

+2

@ विम: [डॉक्स] के अनुसार (http://docs.scipy.org/doc/numpy/reference/generated/numpy.eye.html) 'np.eye'' np.identity' जैसा है लेकिन जोड़ा गया है कार्यक्षमता। आप कॉलम आकार निर्दिष्ट कर सकते हैं और विकर्ण को बदल सकते हैं। –

4

इसके अलावा np.eye एक पहचान सरणी (में) बनाने के लिए इस्तेमाल किया जा सकता है।

उदाहरण के लिए,

>>> np.eye(2, dtype=int) 
array([[1, 0], 
     [0, 1]]) 
>>> np.eye(3, k=1) 
array([[ 0., 1., 0.], 
     [ 0., 0., 1.], 
     [ 0., 0., 0.]]) 
+0

यह क्यों कम हो गया है? –

+0

मैं भी जानना चाहता हूं ... – mbdevpl