問題タブ [narray]

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 投票する
1 に答える
148 参照

ruby - RubyのNArrayでセットビットを合計する最速の方法は何ですか?

NArray を使用してビット配列を実装しましたが、bits_on メソッドの速度に満足していません。現在私は持っています:

byte_arrayNArray.byte() タイプで、@count_array次のようにビルドされます。

アイデア?

乾杯、

マーティン

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

ruby - アレイよりもRubyNArrayを使用する利点は何ですか?

Ruby用のNArrayライブラリに出くわしました。この質問をするときは無知です。

標準のRubyArray実装に比べてNArrayライブラリを使用する利点は何ですか?

NArrayは数値計算を対象としていることを確認しましたが、APIを見ると、数値を対象としたArrayの拡張機能はごくわずかであるように見えます。Arrayでは不可能なことは何もありません。

  1. アレイを使用しないのはなぜですか?
  2. 速度に大きな利点はありますか?
  3. 大きなメモリの利点はありますか?
  4. 通常のRubyArrayクラスを使用するよりも他の利点はありますか?

グーグルはこの質問の有用な説明を実際に思いついたわけではありません。

私が見つけた参考文献:

http://rubydoc.info/gems/narray-ruby19/0.5.9.7/NArray

http://narray.rubyforge.org/index.html.en

http://raa.ruby-lang.org/project/narray/

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

ruby - Rubyでバイト型NArrayの値を置き換える

バイト配列内の「A」をすべて 1 に、「T」を 2 に、「C」を 8 に、「G」を 16 に置き換える方法を探しています。これはどのように行うことができますか?

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

ruby - Ruby NArrayを使用して、しきい値を下回り、左または右に固定された値を選択する

NArrayを使用して、たとえば5未満の値を持つ配列のマスクを作成するための便利な方法がありますが、左側または右側に固定された値の実行に対してのみです。たとえば、この1次元配列:

結果は次のようになります。

そしてこの2次元配列:

結果は次のようになります。

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

ruby - 2次元のRubyNArrayを拡張/縮小するにはどうすればよいですか?

形状が100、10000のNarrayがあり、それを100、20000(基本的に行を追加)に拡張したい場合、これを実現する適切な方法は何ですか?大規模なNarrayを拡張するために、メモリ上の理由から一時的なNarrayの使用は避けたいと思います。

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

ruby - 2次元のRubyNArrayに行を追加するにはどうすればよいですか?

2次元のNArrayに行を追加したいと思います。NArray 0-7チュートリアルで説明されている方法はかなり複雑ですが、もっと簡単な方法があるのではないかと思います。

したがって、2つのNArrayがある場合:

n3を取得するためにn1とn2を追加したいと思います。

これはどのように行うことができますか?

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

ruby - ベクトルを整数に変換する

多次元配列のベクトルの形状を知っているので、どうすればそれを1次元の新しいベクトルに変換できますか(多次元配列を平坦化することによって)?

たとえば、次の配列を考えます。

...ここで、はベクトルAの起点とB終点です。書ける:

これから、平坦化すると仮定するとarr、ベクトルをどのように変換できますか?言い換えれば、この3次元のベクトルを1次元の新しいベクトルに変換するにはどうすればよいでしょうか。

ベクトルの原点は配列の最初の座標でもあるため、これは特殊なケースです。したがって、次の結果を見つけることができます。

2D配列を使用した別の例を次に示します。

私たちはこれを書くことができます:

そして、もう一度、

しかし、これは負のベクトルを使用した、より複雑な例です。

次のメソッドはどのように書くことができますか?

1D配列の例(単純):

任意の次元の配列からベクトルをフラット化する簡単な方法はありますか?ありがとう。

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

ruby - Rubyのnarraygemインストールエラー

Ruby用のNArraygemをインストールして、いくつかの数学関数を実行しようとしています。OSXMountainLionでRubyバージョン1.8.7を実行しています

NArray gemをインストールしようとすると、次のエラーが発生します。

私はグーグルで検索しましたが、運がまったくありませんでした。

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

ruby - ダウンサンプルと条件付き変更のための Ruby NArray の最適化

ruby-fann への入力を作成しており、パフォーマンス上の理由から narray で可能な限り多くの操作を行っています。通常、フロートの 2D 200x200 配列を操作しており、何千回も処理を繰り返す必要があります。

NArray だけを使用すると、許容できるパフォーマンスが得られます。ただし、私が見る限り、NArray に一括処理を実行させることができない場合に、実行したいいくつかの操作を実行しました。つまり、Ruby のループ コントロールを使用して個々の NArray エントリを操作することになります。これは、私のコードのパフォーマンスに即座に悪影響を及ぼします。どのような回避策やアプローチが利用できるのか疑問に思いました。NArray を fork して自分の仕事にいくつかの機能を追加することはできますが、そうしたくはありません。私が必要とする機能は、そのライブラリに入るほど一般的ではないため、私にはうまくいきません。

何らかの形で NArray を直接使用するネイティブ拡張を作成することを検討するかもしれません-それを行う方法についてのポインタは歓迎されます.ネイティブに拡張された宝石を別の宝石から参照する方法がわかりません.

また、Ruby 部分を高速化するため、または NArray 機能や関連ライブラリを利用するために、コードをどのように構造化するかについての洞察やフィードバックをいただければ幸いです。

私の 2 つの遅いコードは非常に似ているため、1 つの質問を投稿します。

1) float の行列を範囲に制限する

私が現在行っていること(簡略化):

2) 平均値に基づいて大きな行列を小さな行列にダウンサンプリングします (「画像のサイズ変更」と考えてください)。

私が現在行っていること(簡略化):

2 番目の例ではNArray のmeanメソッドを使用していますが、1 番目の例ほど問題はありません。各項目に対して小さな Ruby ループを 40000 回実行することになります (つまり、データ セット全体で 2 億回以上!)。


masa16 からの返信に続いて、速度の違いを示す非常に簡単な irb ベンチマークを次に示します。

つまり、10 倍高速な小さなコード セグメントの場合、通常は 250 回ではなく 50,000 回実行しているため、以前は 3 時間から 4 時間かかっていた実行時間を 30 分から 1 時間節約できました。