Scipyには 利用可能な多くの異なるタイプのスパース行列 があります。これらのタイプの最も重要な違いは何ですか?また、それらの使用目的の違いは何ですか?
サンプルコードに基づいてpython)でコードを開発しています1 Matlabで。コードの1つのセクションでは、スパース行列を使用しています。これは、Matlabでは単一の(迷惑な)型を持っているように見えます。私は、どの型を使用すべきかを理解しようとしています。2 Pythonで。
1:これはクラス用です。ほとんどの人がMatlabでプロジェクトを行っていますが、私は不必要な作業と混乱を生み出すのが好きです---どうやら。
2:これは学術的な質問です:コードは ' [〜#〜] csr [〜#〜] '形式で正しく機能していますが、最適な使用法を知ることに興味があります。
これに完全に答えていない場合は申し訳ありませんが、うまくいけば、いくつかの洞察を提供することができます。
CSC(圧縮スパース列)とCSR(圧縮スパース行)はよりコンパクトで効率的ですが、「最初から」構築するのは困難です。 Coo(座標)とDOK(キーの辞書)は簡単に作成でき、matrix.tocsc()
またはmatrix.tocsr()
を介してCSCまたはCSRに変換できます。
CSCは、列の配列および各行での値として格納されるため、一般に、列ベクトルまたは列操作へのアクセスがより効率的です。
CSRマトリックスは反対です。行の配列と各列の値として格納され、行ベクトルまたは行操作へのアクセスがより効率的になります。