2012-12-12 9 views
9

मैं सामान्य रूप सेएक scipy.sparse मैट्रिक्स टुकड़ा करने का सबसे तेज़ तरीका क्या है?

matrix[:, i:] 

का उपयोग यह रूप में तेजी से के रूप में मैं उम्मीद काम नहीं लगता है।

+0

मन हमारे लिए मानदंड? शायद 'टाइमिट' का भी उपयोग करें? –

उत्तर

6

आप सबसे तेज़ तरीका पंक्ति टुकड़ा करने की क्रिया करने के लिए उत्पादन के रूप में एक विरल मैट्रिक्स प्राप्त करने के लिए चाहते हैं, तो एक csr प्रकार है, और स्तंभों के लिए टुकड़ा करने की क्रिया csc, as detailed here। दोनों मामलों में आपको केवल वही करना है जो आप वर्तमान में कर रहे हैं:

matrix[l1:l2,c1:c2] 

यदि आप आउटपुट के रूप में एक और प्रकार चाहते हैं तो शायद तेज़ तरीके हो। In this other answer यह एक मैट्रिक्स और उनके अलग-अलग समय की तुलना करने के लिए कई विधियों को समझाया गया है। उदाहरण के लिए, अगर आप चाहते हैं एक ndarray आउटपुट के रूप में सबसे तेजी से टुकड़ा करने की क्रिया है:

matrix.A[l1:l2,c1:c2] 

या:

matrix.toarray()[l1:l2,c1:c2] 

तुलना में बहुत तेज:

matrix[l1:l2,c1:c2].A #or .toarray() 
+7

लेकिन मैट्रिक्स। ए मेमोरी का नेतृत्व करेगा अगर मैट्रिक्स बहुत बड़ा है। – Munichong

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

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