2012-11-17 34 views
6

scipy.sparse में कोई विधि प्रतीत नहीं होती है जो कम से कम एक स्पैर मैट्रिक्स देता है। विशेष रूप से, मैं न्यूनतम स्तंभों की तलाश करता हूं।कम से कम एक स्पैर मैट्रिक्स?

दस्तावेज़ों में कोई विधि प्रकट नहीं होती है और न्यूनतम न्यूनतम लागू नहीं होता है। यदि X एक स्पैर मैट्रिक्स है, X.min() त्रुटि भी फेंकता है: *** AttributeError: 'module' object has no attribute 'min'

निश्चित रूप से यह कुछ लोगों का उपयोग होना चाहिए। यह कैसे किया जाता है?

+1

संभवतः आपका मतलब है "न्यूनतम गैर शून्य तत्व"। आखिरकार, एक स्पैर मैट्रिक्स में ज़्यादातर शून्य शामिल हैं। – talonmies

+0

नहीं - मेरा मतलब है "न्यूनतम"। स्पैर मैट्रिक्स में नकारात्मक प्रविष्टियां हो सकती हैं। लार्समैन जवाब यह देता है। – gabe

+0

एक स्पैर मैट्रिक्स में एक नकारात्मक प्रविष्टि भी शून्य-शून्य मान है। – talonmies

उत्तर

7
सीएसआर/सीएससी मैट्रिक्स के साथ

,

def min_sparse(X): 
    if len(X.data) == 0: 
     return 0 
    m = X.data.min() 
    return m if X.getnnz() == X.size else min(m, 0) 

का उपयोग पंक्ति या स्तंभ प्रति ऐसा करने के लिए, आप X.getrow(i) for i in X.shape[0] या X.shape[1] से अधिक map कर सकते हैं इस।

लेकिन आप सही हैं, यह एक विधि होनी चाहिए।

+0

धन्यवाद - आप कमाल हैं! मैं scipy सूची में जमा करेंगे। – gabe

+0

इसके अलावा - स्पैर मैट्रिस के लिए विशेषता .डेटा के बारे में जानना अच्छा है। (मुझे विश्वास है) इस ट्यूटोरियल में उल्लेख नहीं है। – gabe

+1

इसके अलावा - क्या आप समझा सकते हैं कि 'X.getnnz() == X.size' अगर आप' m' क्यों लौटते हैं? मैंने बस वास्तविक कोड को देखा और यह हमेशा सच होना चाहिए। मुझे लगता है कि 'एम' वह है जो आप वापस करना चाहते हैं - लेकिन मुझे आपके रिटर्न तर्क को समझ में नहीं आता है। – gabe