scipy.sparse.spdiags या scipy.sparse.diags का उपयोग करते समय मैंने देखा है मैं एक बग के रूप में देखते दिनचर्यात्रुटि
scipy.sparse.spdiags([1.1,1.2,1.3],1,4,4).toarray()
रिटर्न जैसे चाहते
array([[ 0. , 1.2, 0. , 0. ],
[ 0. , 0. , 1.3, 0. ],
[ 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ]])
यह सकारात्मक विकर्णों के लिए है जो इसे पहले के डेटा को छोड़ देता है। कोई तर्क दे सकता है कि इसके लिए कुछ भव्य प्रोग्रामिंग कारण हैं और मुझे बस शून्य के साथ पैड करने की आवश्यकता है। ठीक है, जैसा कि हो सकता है, कोई scipy.sparse.diags का उपयोग कर सकता है जो सही परिणाम देता है। हालांकि इस दिनचर्या एक बग है कि चारों ओर
scipy.sparse.diags([1.1,1.2],0,(4,2)).toarray()
काम नहीं किया जा सकता
array([[ 1.1, 0. ],
[ 0. , 1.2],
[ 0. , 0. ],
[ 0. , 0. ]])
अच्छा देता है, और
scipy.sparse.diags([1.1,1.2],-2,(4,2)).toarray()
है
array([[ 0. , 0. ],
[ 0. , 0. ],
[ 1.1, 0. ],
[ 0. , 1.2]])
लेकिन
देता हैscipy.sparse.diags([1.1,1.2],-1,(4,2)).toarray()
वैल्यूएरर कहने में त्रुटि देता है: विकर्ण लंबाई (ऑफसेट -1 पर सूचकांक 0: 2) मैट्रिक्स आकार (4, 2) से सहमत नहीं है। जाहिर है इस सवाल का जवाब
array([[ 0. , 0. ],
[ 1.1, 0. ],
[ 0. , 1.2],
[ 0. , 0. ]])
और अतिरिक्त यादृच्छिक व्यवहार के लिए हम
scipy.sparse.diags([1.1],-1,(4,2)).toarray()
देने
array([[ 0. , 0. ],
[ 1.1, 0. ],
[ 0. , 1.1],
[ 0. , 0. ]])
किसी को भी पता है कि अगर वहाँ विकर्ण विरल मैट्रिक्स है कि वास्तव में काम करता है के निर्माण के लिए एक समारोह है है है?
यह 'scipy.sparse.diags' में एक बग प्रतीत होता है। [स्रोत] को देखकर (https://github.com/scipy/scipy/blob/v0.16.1/scipy/sparse/construct.py#L63), हम देख सकते हैं कि विकर्ण लंबाई गणना 'm, n = आकार ... लंबाई = मिनट (एम + ऑफ़सेट, एन - ऑफसेट) ', और यह सही नहीं है। यह एक बग रिपोर्ट के लायक है। – user2357112
अधिक जानकारी मेरे उत्तर में है। मुझे आश्चर्य है कि 'लंबाई = मिनट (एम + के, एन - के) 'सही' लंबाई 'है। यह सिर्फ संयोग हो सकता है कि 'ऑफ़सेट = -2' केस काम करता है। – hpaulj
मुझे एक एसओ सवाल याद है जो मैटलैब समकक्ष के साथ 'spdiags' को विपरीत करता है। – hpaulj