2013-04-02 7 views
21

Scipy many different types of sparse matrices available है। इन प्रकारों के बीच सबसे महत्वपूर्ण अंतर क्या हैं, और उनके इच्छित उपयोग में क्या अंतर है?Scipy sparse matrices - विभिन्न कार्यान्वयन के उद्देश्य और उपयोग

मैं मैटलैब में नमूना कोड पर आधारित पायथन में एक कोड विकसित कर रहा हूं। कोड का एक भाग स्पैर मैट्रिस का उपयोग करता है - जिसमें मैटलैब में एक सिंगल (कष्टप्रद) प्रकार प्रतीत होता है, और मैं यह पता लगाने की कोशिश कर रहा हूं कि मुझे किस प्रकार का उपयोग करना चाहिए पायथन में।


1: यह कक्षा के लिए है। ज्यादातर लोग मटकाब में प्रोजेक्ट कर रहे हैं, लेकिन मुझे अनावश्यक काम और भ्रम पैदा करना पसंद है --- जाहिर है।

2: यह एक अकादमिक प्रश्न है: मेरे पास कोड 'CSR' प्रारूप के साथ ठीक से काम कर रहा है, लेकिन मुझे यह जानने में दिलचस्प है कि इष्टतम उपयोग क्या हैं।

+4

मेरा मानना ​​है कि अधिकांश रैखिक बीजगणित संचालन के लिए, या तो सीएसआर या सीएससी आपका पसंदीदा विकल्प होना चाहिए, क्योंकि अधिकांश कार्यों को इन प्रकारों के लिए बनाया गया है। बीएसआर सीएसआर का एक ब्लॉक संस्करण है। सीओओ और डीओके डाटा एंट्री के लिए सुविधाजनक हैं, लेकिन एक बार जब आप इसे दर्ज कर लेंगे, तो आप इसे अन्य प्रकारों में से एक में बदलना चाहेंगे। और एलआईएल को स्लाइसिंग जैसी चीजों के लिए बेहतर समर्थन है। निश्चित नहीं है कि डीआईए रैखिक बीजगणित संचालन के लिए कितना उपयुक्त है। – Jaime

+1

प्रश्न को हल करने के लिए आपको इस पर एक जवाब स्वीकार करना चाहिए :) – Will

उत्तर

24

क्षमा करें अगर मैं इसे पूरी तरह से उत्तर नहीं दे रहा हूं, लेकिन उम्मीद है कि मैं कुछ अंतर्दृष्टि प्रदान कर सकता हूं।

सीएससी (संपीड़ित स्पैस कॉलम) और सीएसआर (संपीड़ित स्पैस पंक्ति) अधिक कॉम्पैक्ट और कुशल हैं, लेकिन "स्क्रैच से" बनाना मुश्किल है। कोओ (समन्वय) और डीओके (कुंजी का शब्दकोश) निर्माण करना आसान है, और फिर इसे matrix.tocsc() या matrix.tocsr() के माध्यम से सीएससी या सीएसआर में परिवर्तित किया जा सकता है।

सीएससी कॉलम-वैक्टर या कॉलम ऑपरेशंस तक पहुंचने में अधिक कुशल है, क्योंकि इसे कॉलम के सरणी और प्रत्येक पंक्ति पर उनके मूल्य के रूप में संग्रहीत किया जाता है।

सीएसआर matrices विपरीत हैं; प्रत्येक कॉलम पर पंक्तियों और उनके मूल्यों के सरणी के रूप में संग्रहीत, और पंक्ति-वैक्टर या पंक्ति संचालन तक पहुंचने में अधिक कुशल होते हैं।

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