問題タブ [sparse-array]

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.

0 投票する
3 に答える
9712 参照

android - Android: SparseArray を反復処理するイディオムはありますか

ユーザー名のリストに対して一意の int id のリストを高速ルックアップ テーブルとして使用しており、sparseArray を使用することにしましたが、デバッグ目的で時々リスト全体をログに記録できるようにしたいと考えています。

SparseArray は反復可能ではなく、util.Map インターフェイスとはあまり似ていません。

0 投票する
3 に答える
3327 参照

python - -v7.3 (HDF5) で保存された Matlab 疎行列を Python に読み込んで操作する

私はmatlabから来て、pythonが初めてです。matlab v7.3 (HDF5) 形式で保存された大きな疎行列があります。これまでに、ファイルをロードする 2 つの方法を見つけましh5pytables。ただし、マトリックスでの操作はいずれにしても非常に遅いようです。たとえば、matlab では次のようになります。

テーブルの使用:

h5py の使用:

(待つの諦めた…)

[編集]

@bpgergo からのコメントに基づいて、次の 2 つの方法でh5py( f)によってロードされた結果をnumpy配列またはscipyスパース配列に変換しようとしたことを追加する必要があります。

また

ただし、これらの操作は両方とも非常に遅くなります。

私がここに欠けているものはありますか?

0 投票する
3 に答える
883 参照

wolfram-mathematica - Mathematica のスパース配列の Outer に代わる効率的な方法は?

2 つの非常に大きなリスト {a1, a2, …} と {b1, b2, …} があり、すべての ai と bj が大きな疎配列であるとします。メモリ効率のために、各リストを 1 つの包括的なスパース配列として格納します。

ここで、各結果 f[ai, bj] が再びスパース配列である ai と bj のすべての可能なペアに対して関数 f を計算したいと思います。ちなみに、これらのスパース配列はすべて同じ次元です。

その間

必要な結果を返します (原則として) 過剰な量のメモリを消費しているように見えます。特に、戻り値は疎配列のリストであるのに対し、私の関心のあるケースでは、1 つの包括的な疎配列の方がはるかに効率的であることがわかります。

上記の の使用に代わる効率的な方法はありOuterますか?

より具体的な例:

Outer(スパース配列のリスト)の未加工の中間結果が非常に非効率的であるだけでなくOuter、計算自体でも大量のメモリを消費しているようです。

0 投票する
2 に答える
242 参照

function - WolframMathematicaでの割り当て

割り当てと変数に関する質問

ここで、この配列を別の関数で操作したいと思います。

次に、評価します

エラー!出力は次のようなエラーになります:Set::write Tag SparseArray in ... is Protected.

では、関数内の関数(非純粋関数)の引数を変更する正しい方法は何ですか?アナログのようなものを作成する方法はPart[]

多分smthのように:

しかし、それは再びエラーです

0 投票する
2 に答える
558 参照

javascript - JavaScript / ECMAScript配列はNode.jsで「スパース」ですか?

私の質問は、 Javascript配列がまばらですか?と同じです。1つの違いがあります...

Node.js(および/またはV8)で実装されているように、JavaScript配列はまばらですか?私はそうだと思っていましたが、次のテストを行いました。

返されるのは10,000個の空白要素で、最後に「test」が付いています。これは、デバッグ出力の動作方法が原因ですか、それともNode.jsは、新しい要素を追加するときに、未定義の配列要素に実際にメモリを割り当てますか?

0 投票する
1 に答える
667 参照

c - スパース、遅延、不変配列用のスレッドセーフなキャッシュ

非常に大きくなる可能性がある配列のコレクション( an の最大値までのインデックスint)を含むアプリケーションがありますが、それらは遅延しています-それらの内容はその場で計算され、要求されるまで実際にはわかりません。配列も不変です。各配列の各要素の値は、プログラムの存続期間を通じて一定です。配列は、多くの場合、すべての配列要素の小さなサブセットのみが要求されるという意味でです (配列にはゼロの大きなブロックが含まれておらず、その意味で「疎」ではありません)。

配列要素を調べて (そしておそらくその過程で計算して) コストがかかる可能性があるため、キャッシュ レイヤーを追加したいと考えています。キャッシュは次のインターフェースを実装する必要があります。

wheredataは、各配列の一意のハンドルとして機能します (これらは多数存在する可能性があります)。 に渡された引数をpoint_cache_fetch()同じ と の引数で返すか、特別な値を返すことでキャッシュ ミスを示す必要があります(呼び出し元がで呼び出すことはありません)。valuepoint_cache_store()dataidxDATUM_UNKNOWN_VALUEpoint_cache_storeDATUM_UNKNOWN_VALUE

問題は、どのように実装できpoint_cache_fetch()ますpoint_cache_store()か? (現在、これらは no-op スタブです。)

考慮すべき点:

  • キャッシュの実装は、スレッドセーフである必要があります。複数のスレッドが同時に実行されており、これらのスレッドのいずれかがor引数を使用してpoint_cache_store()orを呼び出すことができます。point_cache_fetch()dataidx
  • キャッシュは本当にキャッシュです。たとえその値を一度知っていたとしても、がpoint_cache_fetch()を返すことは常に問題ありません。DATUM_UNKNOWN_VALUEその場合、呼び出し元は通常のルックアップを実行するだけです。
  • 配列は不変であることを忘れないでください。与えられたdataidx引数に対して、呼び出し元は常に同じvalue引数を提供します。

これを行うには多くの方法があり、トレードオフが関係していることを認識しています。ただし、この質問については、1 つの非常に具体的な基準で回答を評価します。つまり、質問のきっかけとなったアプリケーションの特定のベンチマークでパフォーマンスが向上するかどうかです。さらに一歩進んで自分でベンチマークを実行したい場合は、次の方法で実行できます。

関数point_cache_fetch()point_cache_store()は「burrow/spectrum/point_cache.c」にあります。関連するベンチマークは「benchmarks/b_cache」です。

0 投票する
1 に答える
137 参照

python - Python で疎配列に関数を格納する

各メンバーがメッセージタイプを表す比較的大きな列挙型があります。クライアントは、列挙型の msg タイプに関連付けられた整数値を含むメッセージを受け取ります。メッセージ タイプごとに、メッセージを処理するための個別の関数コールバックがあります。

列挙値がコールバックのインデックスにマップされるスパース配列 (またはベクトル) を使用して、コールバックのルックアップとディスパッチをできるだけ迅速に行いたいと考えています。配列が関数型を保持できない場合、これは Python で可能ですか?

更新: 用語が明確ではありませんでした。私は今、Python 辞書ルックアップが O(1) の複雑さを持っていることを理解しており、完璧な候補となっています。ありがとう。

0 投票する
8 に答える
9591 参照

android - SparseBooleanArray をバンドルに格納する最良の方法は?

構成の変更が発生すると、ListView チェックボックスの状態が失われます。その理由は理解できます。私は実装しようとします

私のフラグメントの1つに。だから、 SparseBooleanArray をoutStateに格納する最も簡単な方法は何だろうと思っています。

また、ListViewには次のメソッドがあるため、少し混乱しています。

これは何の役に立つのですか?

0 投票する
6 に答える
4444 参照

javascript - Javascript でスパース配列を圧縮しますか?

エントリがまばらな要素の配列があります。データをループするたびに null や未定義の値をチェックし続ける必要がないように、疎な配列を密集した配列に簡単に圧縮するにはどうすればよいですか?

以下にデータの例を示します。

0 投票する
4 に答える
47576 参照

javascript - JavaScriptソートスパース配列はインデックスを保持します

スパース配列をソートし、要素を同じインデックスに保持する最良の方法は何ですか? 例えば:

私は並べ替えの後にしたいです