मैं scipy.sparse.lil_matrix
का उपयोग कर एक बड़े, स्पैस (250k एक्स 250k) सह-घटना मैट्रिक्स बनाने के लिए Scipy का उपयोग कर रहा हूं। सह-घटना मैट्रिस त्रिकोणीय हैं; वह है, एम [मैं, जे] == एम [जे, मैं]। चूंकि यह सभी डेटा दो बार स्टोर करने के लिए अत्यधिक अक्षम (और मेरे मामले में, असंभव) होगा, मैं वर्तमान में समन्वय (i, j) पर डेटा संग्रहीत कर रहा हूं जहां मैं हमेशा जे से छोटा रहता हूं। तो दूसरे शब्दों में, मेरे पास एक मूल्य (2,3) पर संग्रहीत है और (3,2) पर संग्रहीत कोई मूल्य नहीं है, भले ही मेरे मॉडल में (3,2) बराबर (2,3) होना चाहिए। (उदाहरण के लिए नीचे मैट्रिक्स देखें)Scipy sparse त्रिकोणीय मैट्रिक्स?
मेरी समस्या यह है कि मुझे किसी दिए गए इंडेक्स से संबंधित डेटा को यादृच्छिक रूप से निकालने में सक्षम होना चाहिए, लेकिन कम से कम जिस तरह से, मैं वर्तमान में इसे कर रहा हूं, आधा डेटा पंक्ति में है और आधा तो की तरह, कॉलम में है:
M =
[1 2 3 4
0 5 6 7
0 0 8 9
0 0 0 10]
तो, ऊपर मैट्रिक्स को देखते हुए, मैं M[1]
की तरह एक प्रश्न करते हैं, और वापस [2,5,6,7]
प्राप्त करने में सक्षम होना चाहता हूँ। मेरे पास दो प्रश्न हैं:
1) क्या पंक्ति को पहले पूछताछ करने के बाद और फिर कॉलम, और फिर दो को जोड़कर ऐसा करने के लिए एक और अधिक कुशल (अधिमानतः अंतर्निहित) तरीका है? यह बुरा है क्योंकि क्या मैं सीएससी (कॉलम-आधारित) या सीएसआर (पंक्ति-आधारित) आंतरिक प्रतिनिधित्व का उपयोग करता हूं, दो प्रश्नों में से एक बेहद अक्षम है।
2) क्या मैं सिसि के सही हिस्से का भी उपयोग कर रहा हूं? मैंने सिसि लाइब्रेरी में कुछ फ़ंक्शंस देखे हैं जो त्रिभुज मैट्रिक्स का उल्लेख करते हैं, लेकिन वे पूर्ण मैट्रिक्स से त्रिकोणीय मैट्रिस प्राप्त करने के आसपास घूमते प्रतीत होते हैं। मेरे मामले में, (मुझे लगता है) मेरे पास पहले से ही एक त्रिकोणीय मैट्रिक्स है, और इसे कुशल बनाना चाहते हैं।
बहुत धन्यवाद।
इसे त्रिकोणीय ऊपरी पैक भंडारण फ़िया कहा जाता है। मुझे नहीं लगता कि पूरे कॉलम या पंक्ति को त्रिभुज मैट्रिक्स से प्राप्त करने के कुशल तरीके हैं। – Anycorn
'एम [i, j] == एम [जे, मैं] 'का अर्थ है कि मैट्रिक्स सममित है, त्रिकोणीय नहीं है। – EOL
@EOL अच्छा बिंदु। हालांकि विकिपीडिया परिभाषा के अनुसार, यह मैट्रिक्स भी (ऊपरी) त्रिभुज है। – gilesc