2012-11-17 27 views
6

最小限の疎行列を与えるscipy.sparseにはメソッドがないようです。特に、私は最小の列を求めます。スパース行列の最小値?

ドキュメントにはメソッドが表示されず、numpyの最小値は適用されません。 Xが疎な行列である場合、X.min()*** AttributeError: 'module' object has no attribute 'min'というエラーをスローします。

確かにこれは人々が使用するものでなければなりません。これはどうですか? CSR/CSC行列で

+1

おそらく、「最小ゼロでない要素」を意味します。結局のところ、疎な行列は暗黙のうちにほとんどが0を含んでいます。 – talonmies

+0

いいえ - 「最小」を意味します。スパース行列は負の値を持つことができます。 larsmans答えはこれを与える。 – 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-listに提出する。 – gabe

+0

また、疎行列の属性.dataについて知っておきましょう。 (私は信じています)これはチュートリアルで言及されていません。 – gabe

+1

また、 '' X.getnnz()== X.size'なら 'm'を返す理由を説明できますか?私はちょうど実際のコードを見て、これは常に真実でなければなりません。 私はあなたが返そうとしているものだと分かりますが、私はあなたのリターンロジックを理解していません。 – gabe

関連する問題