問題タブ [sparse-matrix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 対角スパース行列を効率的に作成する方法
Numpy を使用して Python で次のコードを作成しました。
最初に作成せずp2
に同じ値を持つスパース行列を取得するにはどうすればよいですか?p
p
c++ - 圧縮されたマトリックスストレージをブースト
ブーストublas::compressed_matrix
は、ゼロ以外の要素にのみスペースを割り当てる必要があります。しかし、以下の例では、奇妙な結果が得られています。
ゼロ以外の要素では(バイトではなく)バイトを取得するのに、なぜ(バイトではなく)バイトublas::matix
のみを取得するのですか?20
4x4 matrix
8*4*4=128
ublas::compressed_matrix
2*2=4
56
4*8=32
また、でゼロ以外の要素の場所を指定する方法もわかりませんでしたublas::compressed_matrix
。コンストラクターに設定されたゼロ以外の要素の数を超えて格納しようとするとどうなりますか?
明確にするのを手伝ってください。
c++ - ブーストでcompressed_matrixによって割り当てられたスペース
boostcompressed_matrixによってどのくらいのスペースが割り当てられますか?ゼロ以外の要素にのみスペースを割り当てるというのは本当ですか?これが本当なら、次のコードがbad_allocエラーを出す理由がわかりません。
3 * m = 3 * 10000 * 10000要素にのみスペースを割り当てる必要がありますか?
明確にするのを手伝っていただけませんか?ゼロ以外の要素にのみスペースを割り当てるために使用できるブーストのデータ構造。次に、ゼロ以外の要素の値を設定するにはどうすればよいですか?
どうもありがとう。
c++ - ブースト圧縮行列の基本
boost::compressed_matrix の仕組みについて混乱しています。次のように compress_matrix を宣言するとします。
これにより、1000x1000 マトリックスの 3*1000 要素にスペースが割り当てられます。では、ゼロ以外の要素である場所をどのように指定すればよいでしょうか? 非ゼロ要素はいつ、どのように設定されますか? B(4,4)=4 など、行列に要素を割り当てるたびに、その要素が非ゼロとしてマークされますか?
可能であれば、例を使用してこれを学ぶのを手伝っていただければ幸いです。内部実装へのいくつかの洞察は素晴らしいでしょう。当て推量によって次善のプログラムを書かないようにしたいのです。
ありがとう!
matlab - 大きなスパース行列を並べ替えて、結果をmatlabにエクスポートするにはどうすればよいですか?
サイズが6004*17842(doc * terms)の大きなスパース行列を処理する必要があります。関数find()は、その行、列、および値を取得しようとしましたが、結果はASCII形式で保存されています。ただし、用語は各ドキュメントで並べ替えられていません。マトリックスを並べ替えて、並べ替えた結果をエクスポートする方法を誰かに提案してもらえますか?
c++ - より効率的な疎行列要素アクセサー
メンバーを使用して小さな疎行列クラスを作成しました。
以下のメソッドは、反復子を介して不可能な場合に、マトリックスの要素にアクセスするために使用する関数です。
それでも、この関数は非常に頻繁に呼び出される必要があります。この機能を改善する方法を誰かが考えていますか? ありがとうございます。
algorithm - 関連機能のデータ構造に関する提案
ドキュメントのセットがあり、それぞれに機能のセットがあります。機能Aが与えられた場合、同じドキュメントに機能Bが含まれる確率を知る必要があります。
確率行列stを作成することを考えました。M(i、j)=機能Aが存在する場合、ドキュメントに機能Bが含まれる確率。
ただし、追加の要件があります。機能Aがドキュメント内にある場合、同じドキュメント内にある確率>Pを持つすべての機能は何ですか。
つまり、私が考えることができるのは、確率行列のスパース行列だけです。計算された後、すべての列で実行される各特徴について、Pで並べ替え、リンクリストのどこかに保持します。(これで、機能ごとに、対応する機能のリストが表示されます。
この空間計算量は非常に大きく(最悪の場合:N ^ 2、Nは大きい!)、各検索の時間計算量はO(N)です。
より良いアイデアはありますか?
haskell - Haskellのスパース線形代数パッケージはありますか?
おそらく高速で効率的なCライブラリに基づいて、スパース線形代数の計算を実行するパッケージはありますか?Hackageを検索しましたが、何も見つかりませんでした。GSL、BLAS、LAPACKを使用するhmatrixは優れていますが、線形システムやスパース行列の固有値/ベクトルの問題を解決するための特別なアルゴリズムが含まれていないようです。 。私が見つけたいのは、scipyのsparse.linalgモジュールに似たものです。ありがとう!
perl - PerlでN x Mグリッドを効率的に埋めるにはどうすればよいですか?
データファイルを解析し、1100 x 1300 グリッドで満たされた 5 つの出力ファイルを書き込む Perl スクリプトがあります。スクリプトは機能しますが、私の意見では、ぎこちなく、おそらく非効率的です。スクリプトも継承されたコードであり、読みやすくするために少し変更しています。それでも、それは混乱です。
現時点では、スクリプトはデータファイル (~4Mb) を読み取り、それを配列に配置します。次に、配列をループして内容を解析し、値を別の配列にプッシュし、最後にそれらを別の for ループでファイルに出力します。特定のポイントの値が見つからない場合は、9999 が出力されます。ゼロは許容値です。
データファイルには 5 つの異なるパラメーターがあり、それぞれが独自のファイルに書き込まれます。
データの例:
5559は、現在のパラメーターへのデータ行の数です。データ行は次のようになります: x、y、その特定のポイントの連続する x 値の数、そして最後にvalues。パラメータ間に空行があります。
先ほど言ったように、スクリプトは機能しますが、これははるかに簡単かつ効率的に実行できると思います。方法がわかりません。ですから、ここが自己改善のチャンスです。
配列と for ループの複雑な組み合わせよりも、この問題へのより良いアプローチは何でしょうか?
編集:
これについてもっと明確にするべきでした、ごめんなさい。
出力は、データ ファイルから読み取った値で満たされた 1100 x 1300 グリッドです。各パラメータは異なるファイルに書き込まれます。データ行の複数の値は、その行に x(+n), y ポイントのデータがあることを意味します。
更新:
ソリューションをテストしたところ、驚いたことに、元のスクリプトよりも遅くなりました (~3 秒)。ただし、スクリプトは最大 50% 小さいため、スクリプトの機能を実際に理解するのがはるかに簡単になります。この場合、それは 3 秒の速度向上よりも重要です。
古いスクリプトのコードの一部を次に示します。そこから基本的な考え方を理解していただければ幸いです。なぜ速いのですか?
c# - 非常にまばらな配列の実装
私は(C#)からルックアップを行いたい、それぞれ8192の4つの次元を持つ非常にまばらな静的配列を持っています。これらの 4.5 * 10^15 値のうち 68796 のみが非ゼロです。速度とメモリ使用量が少ないことが不可欠で、これを行うための最速の方法は何ですか?
ありがとう