問題タブ [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.
c++ - このSORソルバーの速度が入力に依存するのはなぜですか?
他の質問に関連して、SOR(Successive Over-Relaxation)法を使用するようにスパース行列ソルバーを変更しました。コードは次のようになります。
奇妙なことにomega
、(緩和係数を)増やすと、実行速度はさまざまな配列内の値に劇的に依存し始めます。
の場合omega = 1.0f
、実行時間はほぼ一定です。初めてomega = 1.8
、これを10回実行するのに通常5ミリ秒かかりますがstep()
、シミュレーション中に徐々に100ミリ秒近くまで増加します。を設定omega = 1.0001f
すると、それに応じて実行時間がわずかに増加します。値が高いomega
ほど、シミュレーション中の実行時間が速くなります。
これらはすべて流体ソルバー内に埋め込まれているため、スタンドアロンの例を思い付くのは困難です。しかし、私は初期状態を保存し、タイムステップごとにその状態でソルバーを再実行し、実際のタイムステップを解きました。初期状態では高速でしたが、後続のタイムステップでは徐々に遅くなりました。他のすべてが等しいので、それはこのコードの実行速度がそれらの6つの配列の値に依存していることを証明します。
これは、g ++を使用するUbuntuで再現可能であり、VS2008で32ビット用にコンパイルする場合は64ビットのWindows7でも再現可能です。
NaNとInfの値は浮動小数点の計算では遅くなる可能性があると聞きましたが、NaNまたはInfsは存在しません。フロート計算の速度が入力数値の値に依存する可能性はありますか?
python - scipy.sparse行列のインデックス操作のベクトル化
次のコードは、すべてがベクトル化されているように見えても、実行速度が遅すぎます。
問題は、インデックス作成操作がPython関数として実装されており、呼び出すとA[i,j]
次のプロファイリング出力が生成されることです。
つまり、Python関数_get_single_element
は100000回呼び出されますが、これは非常に非効率的です。なぜこれは純粋なCで実装されないのですか?この制限を回避し、上記のコードを高速化する方法を知っている人はいますか?別のスパース行列タイプを使用する必要がありますか?
database - Tableau でスパース列を操作できますか?
Tableau を評価していて、SQL Server 2008 テーブルのスパース列を認識していないように見えることに気付きました。これは可能ですか、それとも一般的な回避策はありますか?
r - Rでは、名前付き行を使用する場合、疎行列列を別の疎行列に追加(連結)できますか?
2 つのスパース行列がm1
あり、次のm2
とおりです。
cbind()
そして、次のようなスパース行列を作成してもらいたい:
ただしcbind()
、名前付き行は無視されます。
ブルートフォースループなしでこれを行う方法はありますか?
python - Scipy sparse... 配列?
だから、私は非常にまばらなnumpy配列を使用していくつかのKmeans分類を行っています-たくさんのゼロ。ストレージのオーバーヘッドを削減するために scipy の「スパース」パッケージを使用すると考えましたが、行列ではなく配列を作成する方法について少し混乱しています。
スパース行列の作成方法に関するこのチュートリアルを実行しました: http://www.scipy.org/SciPy_Tutorial#head-c60163f2fd2bab79edd94be43682414f18b90df7
配列を模倣するために、1xN 行列を作成するだけですが、ご想像のとおり、2 つの 1xN 行列を掛けることができないため、Asp.dot(Bsp) はまったく機能しません。各配列を Nx1 に転置する必要がありますが、内積計算ごとにこれを行うことになるため、これはかなり不自由です。
次に、列 1 == 行 1 の NxN 行列を作成しようとしました (2 つの行列を乗算して、左上隅を内積として取得できるようにするため)。
numpy の array() の代わりに scipy の sparse パッケージを魔法のように使いたいと思っていますが、どうすればよいかわかりません。
何かアドバイス?
linux - ブロックがスパースファイルに存在するかどうかを確認するにはどうすればよいですか(単純なコピーオンライトの場合)?
Linuxのreiserfs/ext3で、スパースブロックサイズを取得し、データがスパースファイルの指定されたオフセットに存在するかどうかを確認するにはどうすればよいですか?
これを使用して、FUSEを使用した単純なコピーオンライトブロックデバイスを実装したいと思います。
または、ビットマップを別のファイルに保存する方がよいでしょうか。
sql - PostgreSQL でスパース データを表現する
PostgreSQLでスパースデータマトリックスを表現する最良の方法は何ですか? 私が見る2つの明白な方法は次のとおりです。
考えられるすべてのフィーチャ (潜在的に数百万) に対して個別の列を持つ単一のテーブルにデータを格納しますが、未使用のフィーチャのデフォルト値は NULL です。これは概念的には非常に単純ですが、ほとんどの RDMS 実装では、通常、NULL 値がある程度のスペースを占めるため、これは通常非常に非効率的であることを知っています。ただし、PG は NULL 値のデータを取得しないため、スパース データの保存に適していると主張する記事 (残念ながらリンクが見つかりません) を読みました。
「行」テーブルと「列」テーブルを別々に作成し、中間テーブルを作成してそれらをリンクし、その行の列の値を格納します。これはより伝統的な RDMS ソリューションだと思いますが、それに伴う複雑さとオーバーヘッドが大きくなります。
また、スパース データをより適切にサポートすると主張するPostgreDynamicも見つけましたが、この機能のためだけにデータベース サーバー全体を PG フォークに切り替えたくありません。
他の解決策はありますか?どちらを使用する必要がありますか?
matlab - 疎行列からベクトルを取得する最良の方法
各行がm x n
ゼロと各行の同じ値で構成される行列があります。
例は次のとおりです。
この例では、最初の列は0
s と-0.6
、2 番目0
と1.8
、3 番目などで構成さ-2.3
れています。
そのような場合、m を 1 に減らしたい (指定された行列からベクトルを取得する) ため、この例ではベクトルは次のようになります。[-0.6 1.8 -2.3 3.4 -3.8 -4.3]
そのような行列からベクトルを取得する最良の方法を知っている人はいますか?
ありがとうございました!
python - numpy配列をscipy.sparse.dok_matrixに追加する
scipy.sparse.dok_matrix
(dimensions mxn)があり、長さmのフラットなnumpy-arrayを追加したいと考えています。
dok_matrix.__setitem__
ただし、このコードは、存在しないキー()を削除しようとすると例外を発生させdel self[(i,j)]
ます。
だから、今のところ私はこれを不法な方法でやっています:
これは非常に非効率的だと感じます。それで、これを行う最も効率的な方法は何ですか?
ありがとう!
matlab - MATLAB: 2 つの配列を疎行列に変換する
2 つの配列を疎行列に変換するコマンドまたはトリックを探しています。2 つの配列には x 値と y 値が含まれ、デカルト座標系の座標が得られます。座標をグループ化したいのですが、値が x 軸と y 軸のある値の間にある場合です。
この小さなトリックに簡単な方法はありますか?