36

Scipy には、さまざまな種類の疎行列が用意されています。これらのタイプの最も重要な違いは何ですか? また、使用目的の違いは何ですか?

Matlabのサンプル コード1に基づいて、Python でコードを開発しています。コードの 1 つのセクションでは、スパース行列を使用しています。これは、Matlab で単一の (迷惑な) 型を持っているようです。Python で2を使用する必要がある型を見つけようとしています。


1: これはクラス用です。ほとんどの人はプロジェクトを Matlab で行っていますが、私は不必要な作業と混乱を引き起こすのが好きです --- どうやら。

2: これは学術的な質問です。' CSR ' 形式で適切に動作するコードを持っていますが、最適な使用法が何であるかを知ることに興味があります。

4

1 に答える 1

44

これに十分に答えていない場合は申し訳ありませんが、うまくいけば、洞察を提供できます。

CSC (Compressed Sparse Column) と CSR (Compressed Sparse Row) はよりコンパクトで効率的ですが、「ゼロから」構築するのは困難です。Coo (座標) と DOK (キーの辞書) は作成が簡単で、 または を介し​​て CSC または CSR に変換できmatrix.tocsc()ますmatrix.tocsr()

一般に、CSC は列の配列と各行の値として格納されるため、列ベクトルまたは列操作へのアクセスがより効率的です。

CSR マトリックスは逆です。行とその値の配列として各列に格納され、行ベクトルまたは行操作へのアクセスがより効率的になります。

于 2013-06-01T18:01:39.913 に答える