問題タブ [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 投票する
5 に答える
3609 参照

java - Android の SparseArray クローン

SparseArrayを反復処理して、いくつかの項目を削除しようとしています。

プライベート SparseArray レコード。

でもイテレーションの途中でアイテムを外すとサイズが変わってしまうので使えません。事前にスパース配列のクローンを作成しようとしました。しかし、日食は私にエラーを与えます

しかし、SparseArray の api doc とソース コードの両方が、それが存在し、公開されていることを示しています。また、メソッドクローンには注釈があります@SuppressWarnings("unchecked")

抑制はメソッドの可視性を変更しますか?
これを解決する方法や SparseArray のクローンを作成する方法を知っている人はいますか?

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

arrays - Actionscriptでスパース配列の要素数を取得するにはどうすればよいですか?

Actionscript はスパース配列を使用するため、次のような配列を使用できます。

これで、myArray.length は 23 になります。すべての要素を反復せずに、配列内の実際の項目数を取得する方法はありますか?

0 投票する
5 に答える
22320 参照

java - SparseArray、キーが存在するかどうかを確認します

を使用してビットマップキャッシュを実装していHashMap<Integer, Bitmap>ましたが、Eclipseで次の警告を受け取りました。

パフォーマンスを向上させるために、代わりに新しいSparseArray(...)を使用してください。

そのクラスのことは聞いたことがありませんが、調べてみるとcontainsKey()、キャッシュからビットマップを取得してキャッシュに存在するかどうかを確認するために呼び出していたメソッドがないようです。存在しない場合は、次にそれを追加します。

キーがすでに存在するかどうかを確認するための最良の方法に関するアイデアはありますか?

このオーバーロードを使用してnullをチェックするようにコードを変更できると思いますか?

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

python - スパースPythonベクトルのノルム

Pythonでスパースベクトルのノルムを効果的に取得することは可能ですか?

私は次のことを試しました:

しかし、エラーが発生します:

ノルム関数は配列でのみ機能するため、おそらくcsr_matrixが機能しないのはそのためですが、ノルムを効果的に計算する別の方法が見つかりませんでした。考えられる解決策の1つは、次のように計算することです。

しかし、最初はスパースベクトルを使用する目的が失われます。そして最後のアプローチとして、ベクトルの各要素を反復処理し、ノルムを手動で計算することができましたが、効率が非常に重要であるため、より速く、より簡単に実装できるものを探していました。

助けてくれてありがとう!

編集:私は提案されたすべてを試しました、そして最良の解決策は:

ダガルから。しかし、Cythonのソリューションも非常に優れており、ベクトルがゼロとは異なる要素の数が増えるにつれて、より適切に機能します。助けてくれてありがとう!

0 投票する
5 に答える
14298 参照

java - Java のメモリ効率の良いスパース配列

(時間効率の良いスパース配列についていくつか質問がありますが、私はメモリ効率を探しています。)

List<T>aまたはMap<Integer,T>whichに相当するものが必要です

  1. 以前よりも大きなキーを設定するだけで、必要に応じて拡張できます。(キーが非負であると仮定できます。)
  2. ArrayList<T>ほとんどのインデックスが ではないnull場合、つまり実際のデータがあまりまばらでない場合と同じくらいメモリ効率が良いです。
  3. インデックスがまばらな場合、非インデックスの数に比例してスペースを消費しnullます。
  4. より少ないメモリを使用しますHashMap<Integer,T>(これはキーをオートボックス化し、おそらくスカラー キー タイプを利用しないため)。
  5. N がエントリの数である償却された log(N) 時間で要素を取得または設定できます。線形時間である必要はありません。二分探索は許容されます。
  6. 非ウイルス性のオープンソースの純粋な Java ライブラリ (できれば Maven Central) に実装されています。

そのようなユーティリティクラスを知っている人はいますか?

Commons Collections に 1 つあると思っていましたが、そうではないようでした。

値の型が無償org.apache.commons.math.util.OpenIntToFieldHashMapのように見えることを除いて、ほとんど正しいように見えるものに出くわしました。FieldElement私はただ欲しいT extends Object。ソース コードをより一般的なものに編集するのは簡単なようですが、利用可能な場合はバイナリ依存関係を使用したいと思います。

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

ruby - カスタム2次元配列の各メソッドを作成する

これらの手順に従って、2次元配列のカスタムクラスを作成しました。

Object#each doを使用してオブジェクトの第1レベルと第2レベルを反復処理できるように、このクラスを変更するにはどうすればよいですか?簡単に説明してください、私は初心者です。

オブジェクトで各メソッドを使用する方法の例:

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

java - 「SparseArray - インデックスにギャップがある可能性があります」とはどういう意味ですか?

整数をキー、オブジェクトを値とするハッシュ マップを使用するプログラムの開発。SparseArray がより効率的であることを通知する Lint 警告を取得し続けます。このリンクで与えられたのと同じことを読むと、インデックスにギャップがある可能性があります。それは実際にはどういう意味ですか、私は得ることができません。

1,5,10 のようなキーがある場合、配列サイズはインデックス 1、5、10 の 3 になります。(または) 配列サイズは 11 になり、オブジェクトは 1、5、10 のインデックスに存在し、残りは空になります。 ?

私を明確にしてください。

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

cuda - CUDA Cを使用してスパース配列をすばやく圧縮するにはどうすればよいですか?

概要

[A - B - - - C]デバイスメモリ内の配列ですが、必要です[A B C]-CUDA Cを使用する最も簡単な方法は何ですか?

コンテクスト

Aデバイス(GPU)メモリに整数の配列があります。各反復で、0より大きいいくつかの要素をランダムに選択し、それらから1を引きます。L0に等しい要素のソートされたルックアップ配列を維持します。

(ここでは、要素ランダムに選択し、から1を減算します。CUDACでの実装では、各スレッドはの要素にマップされるため、データの競合を防ぎ、並べ替えられた順序を維持するために、ルックアップ配列はスパースです(例ではなく) 。14A[0 1 2 6][0 2 6 1]

後で、0に等しい要素に対してのみいくつかの操作を実行します。したがってL、スレッドを0要素にマップできるように、スパースルックアップ配列を圧縮する必要があります。

そのため、CUDA Cを使用してデバイスメモリ上のスパースアレイを圧縮する最も効率的な方法は何ですか?

どうもありがとう。

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

android - sparsearray をバンドルに格納する方法

私は を持っていて、それを自分のアクティビティのメソッドSparseArray<myObject>でバンドルに保存し、 にonSaveInstanceState復元したいと考えていoncreateます。putSparseParcelableArraySparseArray をバンドルに入れるメソッドを見つけ、メソッドでこれを行いましたonSaveInstanceState

しかし、Eclipseはこのエラーを示しています:

そして、クイックフィックスは引数mySparsArraySparseArray<? extends Parcelable>にキャストしていますが、そうしてonCreateメソッドで取得すると:

次のエラーが発生します。

この方法が間違っている場合、 mySparseArray をバンドルに入れるための解決策は何ですか? どんな助けでも大歓迎です。

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

java - アプリの起動時にsparsearrayを作成する(およびRAMに保存する)方法は? (アンドロイド)

私はアンドロイドアプリを作っています。アプリにはアクティビティがあり、トリガーされると、sparsearray を作成してデータを入力します。現在、このプロセスはエミュレーターで最大 1 分かかり、非常に時間がかかります。そのため、アプリの起動時にその sparsearray を一度作成し、アプリの存続期間中は sparsearray を RAM に保存したいと考えています。また、アクティビティがトリガーされるたびに、新しいものを作成するのではなく、RAM 内の sparsearray にアクセスする必要があるため、時間と処理能力が節約されます。これを行うことができますか?この質問がばかげている場合は申し訳ありませんが、私はアンドロイドが初めてです。ありがとう!*編集: これは sparsearray を作成する関数がどのように見えるかです: //sparsearray を作成する関数にアクセスする関数