मैं निम्न समीकरण scipy का विरल पैकेज का उपयोग लागू करने के लिए कोशिश कर रहा हूँ विरल मैट्रिक्स पर बाहरी उत्पादों का योग:प्रदर्शन
W = x[:,1] * y[:,1].T + x[:,2] * y[:,2].T + ...
जहां x & y एक nxm csc_matrix हैं। असल में मैं वाई के प्रत्येक कॉल द्वारा एक्स के प्रत्येक को गुणा करने की कोशिश कर रहा हूं और परिणामी एनएक्सएन मैट्रिक्स को एक साथ जोड़ता हूं।
c = sparse.csc_matrix((n, n))
for i in xrange(0,m):
tmp = bam.id2sym_thal[:,i] * bam.id2sym_cort[:,i].T
minimum(tmp.data,ones_like(tmp.data),tmp.data)
maximum(tmp.data,ones_like(tmp.data),tmp.data)
c = c + tmp
इस कार्यान्वयन में निम्न समस्याएं हैं:
मेमोरी उपयोग में विस्फोट हो रहा है मैं तो सभी गैर शून्य तत्व 1.
यह मेरा वर्तमान कार्यान्वयन है बनाना चाहते हैं। जैसा कि मैं इसे समझता हूं, स्मृति को केवल कम होना चाहिए क्योंकि सी कम स्पैस हो जाता है, लेकिन मैं देख रहा हूं कि लूप एक = 10,000, एम = 100,000 (वाई की प्रत्येक पंक्ति में केवल 60 गैर- शून्य तत्व)।
मैं एक पायथन लूप का उपयोग कर रहा हूं जो बहुत ही कुशल नहीं है।
मेरा प्रश्न: क्या ऐसा करने का कोई बेहतर तरीका है? स्मृति उपयोग को नियंत्रित करना मेरी पहली चिंता है, लेकिन इसे तेज़ी से बनाना बहुत अच्छा होगा!
धन्यवाद!
'x [:, i] 'आपको' x' का ith कॉलम देने वाला है, पंक्ति – JoshAdel
@ जोशएडेल नहीं: आप सही हैं, मैं गलत हूं, मेरा कहना है कि एक्स के कॉलम को एक्स के कॉलम से गुणा करें y। मैंने सवाल अपडेट किया है। धन्यवाद! – RussellM
आपका समीकरण बाहरी उत्पादों का एक आंतरिक उत्पाद है, न कि बाहरी उत्पादों। आपको 'y' के कॉलम को ट्रांसफर करना होगा, न कि' x'। (या तो वह, या शीर्षक गलत है।) –